0
$r = 302 / 490;
printLn($r);
printLn(round($r, 2, PHP_ROUND_HALF_UP));

0.61632653061224484947189239392173476517200469970703125 0.619999999999999995555910790149937383830547332763671875

为什么不正常四舍五入到真正的 2 位数?

4

2 回答 2

2

在浮点数的可测量精度范围内,显示的四舍五入为0.62。要了解为什么您没有得到确切0.62的 ,您需要了解浮点数是如何工作的。基本上,您可以取任何数量级高达 2 53 -1 的整数并将其乘以 -1074 和 971(含)之间的任何 2 的幂。0.62不能以这种方式准确表示。

换句话说,你的precisionINI设置太高了。请参阅此键盘。尝试将其设置为更具代表性的数字,例如默认的 15。

于 2012-10-16T13:53:03.540 回答
0

我使用print而不是printLn尝试了您的代码,这就是我得到的:

0.61632653061224
0.62

您可以尝试使用 print 而不是 printLn(这是 Java 打印)来修改您的代码吗?

于 2012-10-16T13:52:10.827 回答