나는 (테이블의 키가있는) BIGINT 값의 PHP 표현을 실험하고있어, 나는 작은 시험을 썼다 PHP 문자열/부동 소수점 값으로 많은 수를 처리하는 방법을 테스트 :PHP BIGINT 표현
<?php
echo "PHP_INT_MAX=".PHP_INT_MAX."\n";
$x = "9223372036854775107";
echo "Defining x as : 9223372036854775107\n";
$y = floatval($x);
echo "float of x: ".$y."\n";
echo "float to string using strval: ".strval($y)."\n";
echo "float to string using sprintf: ".sprintf("%.0f", $y)."\n";
?>
을 그래서 출력에 대해 궁금합니다.
PHP_INT_MAX=9223372036854775807
Defining x as : 9223372036854775107
float of x: 9.2233720368548E+18
float to string using strval: 9.2233720368548E+18
float to string using sprintf: 9223372036854774784
그런데 왜 일치하지 않는 값이 표시됩니까? (php.ini 파일의 정밀도 = 12)
그들이 나에게 일치처럼 그들은 찾습니다 차이는 어디? –
당신은 정밀도 설정을 알고 있습니다 -이 숫자에서'92233720368548'은 14 자리 유효 숫자입니다. 설정을 20으로 늘리면 원하는대로 볼 수 있습니다. –
동일한 테스트를 ini_set ('precision', 32)과 함께 추가했습니다. 여전히 같은 (마크! : 9223372036854775107는 = 9223372036854774784) 얻을 –