$r = 302 / 490;
printLn($r);
printLn(round($r, 2, PHP_ROUND_HALF_UP));
给出
0.61632653061224484947189239392173476517200469970703125 0.61999999999999999555910790149937383830547332763671875
为什么不能正常舍入到真正的2位?
答案 0 :(得分:2)
在可测量的浮点数精度范围内,显示的舍入数字为0.62
。要理解为什么没有准确0.62
,您需要了解浮点数的工作原理。基本上你可以取任何大小为2 53 -1的整数,并乘以-1074和971(含)之间的任何2的幂。 0.62
无法以这种方式准确表示。
换句话说,您的precision
INI设置过高。见this codepad。尝试将其设置为更具代表性的数字,例如默认值15。
答案 1 :(得分:0)
我使用打印代替 printLn 尝试了您的代码,这就是我所得到的:
0.61632653061224
0.62
您是否可以尝试使用print而不是printLn修改代码(这是Java打印)?