$r = 302 / 490;
printLn($r);
printLn(round($r, 2, PHP_ROUND_HALF_UP));
与える
0.61632653061224484947189239392173476517200469970703125 0.61999999999999999555910790149937383830547332763671875
本当に2桁に通常の丸めをしないのはなぜですか?
$r = 302 / 490;
printLn($r);
printLn(round($r, 2, PHP_ROUND_HALF_UP));
与える
0.61632653061224484947189239392173476517200469970703125 0.61999999999999999555910790149937383830547332763671875
本当に2桁に通常の丸めをしないのはなぜですか?
浮動小数点数の測定可能な精度の範囲内で、示されている丸められた数は0.62
です。正確0.62
に取得できない理由を理解するには、浮動小数点数がどのように機能するかを理解する必要があります。基本的に、2 53 -1までの任意の大きさの整数を取り、-1074から971(両端を含む)までの任意の2の累乗を掛けることができます。0.62
この方法で正確に表現することはできません。
言い換えれば、precision
INI設定が高すぎます。このコードパッドを参照してください。デフォルトの15など、よりわかりやすい数値に設定してみてください。
printLnの代わりにprintを使用してコードを試しましたが、これが得られたものです。
0.61632653061224
0.62
printLn(これはJava印刷です)の代わりにprintを使用してコードを変更してみてください。