반응형
서문: API 인터페이스를 쓸 때, 작은 게임 앞부분에서 전송된 데이터는 과학적으로 계수된 문자 형식입니다. 예를 들어 1.2345678987654321e+30입니다. 이 경우 백그라운드 처리는 데이터를 비교 정렬해야 합니다.
1.필드로 varchar 타입 비교 정렬하기
'CAST(`cashnum_week` AS UNSIGNED)
$list = $wx_user->field('id,user_name,head_img,cashnum_week')
->where(['status'=>1])
->order('CAST(`cashnum_week` AS UNSIGNED) DESC')
->select();
필드 cashnum_week를 부호화하지 않고 직접 변환합니다. 이 때 정렬하기
2.사이언스 카운트 포맷을 문자열로 변환
과학적으로 숫자를 세어라: 1.2345678987654321e+30 '123456789' 문자열로 변환876543210000000000000’
우선 변수를 분할하여 재구성한 결과를 얻을 수 있다
구현 원리: (1) 1.2345678987654321e+30을 1로 분할한다..2345678987654321과 + 30
(2) 1.2345678987 사용 중654321에 10을 곱한 30승,10의 30승은 php함수 pow(10,30)로 도출된다.
a.첫 번째 방법은 가장 일반적인 생각에서 출발한다.
public function sctonum($num){
if(false !== stripos($num, "e")){
$a = explode("e",strtolower($num));
$b = $a[0] * pow(10,$a[1]);
return $b;
}else{
return $num;
}
}
b.순환으로 이끌어 내다
public function numToStr($num)
{
$result = "";
if (stripos($num, 'e') === false) {
return $num;
}
while ($num > 0) {
$v = $num - floor($num / 10) * 10;
$num = floor($num / 10);
$result = $v . $result;
}
return $result;
}
c.모든 것을 php함수로 구하다
public function sctonum($num, $double = 5){
if(false !== stripos($num, "e")){
$a = explode("e",strtolower($num));
return bcmul($a[0], bcpow(10, $a[1], $double), $double);
}else{
return $num;
}
}
//붓다$double 소수 자리입니다. 기본값으로 없음
총결산 및 건의: 만인의 눈에는 만 개의 해리 포터가 보인다!각각의 결과는 다른 과정에 의해 실현될 수 있습니다. 먼저 자신의 가장 편리한 방법을 사용하고, 그 다음에 최적화하고, 그 다음에 이해 가능하고 효율적인 방법, 예를 들어 c, 간결하고 효율적입니다
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
centos에서 php5.3에서 php5.6으로 업그레이드 (0) | 2022.07.01 |
---|---|
PHP 설치Xdebug (0) | 2022.07.01 |
PHP 8대 디자인 패턴 (0) | 2022.06.30 |
PHP 구현 파일 업로드 (0) | 2022.06.30 |
PHP php-fpm을 다시 시작하는 몇 가지 방법 (0) | 2022.06.30 |