私は BIGINT 値 (テーブルのキー) の PHP 表現を試しており、PHP が大きな数を文字列/浮動小数点値としてどのように処理するかをテストするために、小さなテストを書きました:
<?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 ファイルの精度 = 14)