如何处理 PHP 中浮点数的奇怪舍入
众所周知,浮点运算并不总是完全准确,但是如何处理它的不一致之处呢?
举个例子,在 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
您将如何解决这个问题?
As we all know, floating point arithmetic is not always completely accurate, but how do you deal with its inconsistencies?
As an example, in PHP 5.2.9: (this doesn't happen in 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
How would you work around this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
欢迎来到 IEEE754,祝您住宿愉快。
使用
bc
或gmp
代替。Welcome to IEEE754, enjoy your stay.
Use
bc
orgmp
instead.