$r = 302 / 490;
printLn($r);
printLn(round($r, 2, PHP_ROUND_HALF_UP));
给
0.61632653061224484947189239392173476517200469970703125 0.619999999999999995555910790149937383830547332763671875
为什么不正常四舍五入到真正的 2 位数?
$r = 302 / 490;
printLn($r);
printLn(round($r, 2, PHP_ROUND_HALF_UP));
给
0.61632653061224484947189239392173476517200469970703125 0.619999999999999995555910790149937383830547332763671875
为什么不正常四舍五入到真正的 2 位数?
在浮点数的可测量精度范围内,显示的四舍五入为0.62
。要了解为什么您没有得到确切0.62
的 ,您需要了解浮点数是如何工作的。基本上,您可以取任何数量级高达 2 53 -1 的整数并将其乘以 -1074 和 971(含)之间的任何 2 的幂。0.62
不能以这种方式准确表示。
换句话说,你的precision
INI设置太高了。请参阅此键盘。尝试将其设置为更具代表性的数字,例如默认的 15。
我使用print而不是printLn尝试了您的代码,这就是我得到的:
0.61632653061224
0.62
您可以尝试使用 print 而不是 printLn(这是 Java 打印)来修改您的代码吗?