如何处理PHP中奇怪的浮点数舍入

nic*_*ckf 8 php floating-point rounding

众所周知,浮点运算并不总是完全准确,但是你如何处理它的不一致呢?

例如,在PHP 5.2.9中:( 在5.3中不会发生这种情况)

echo round(14.99225, 4);  // 14.9923 
echo round(15.99225, 4);  // 15.9923 
echo round(16.99225, 4);  // 16.9922 ??
echo round(17.99225, 4);  // 17.9922 ??
echo round(25.99225, 4);  // 25.9922 ??
echo round(26.99225, 4);  // 26.9923
Run Code Online (Sandbox Code Playgroud)

你会如何解决这个问题?

Ign*_*ams 8

欢迎来到IEEE754,享受您的住宿.

使用bcgmp代替.