首页 / PHP / PHP舍入问题(5.2.3)?
PHP舍入问题(5.2.3)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP舍入问题(5.2.3)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1100字,纯文字阅读大概需要2分钟。
内容图文
![PHP舍入问题(5.2.3)?](/upload/InfoBanner/zyjiaocheng/698/e8e14455900d4b198ce074464e85416b.jpg)
我想知道我是否发现了PHP中的舍入问题,特别是5.2.3(我目前还不确定其他版本):
$t = 0;
$taxAmount = (5.000 / 100) * 0.7;
$t += $taxAmount;
var_dump($t); // float(0.035)
var_dump(round($t, 2)); // float(0.03)
var_dump(number_format($t, 2)); // string(4) "0.03"
对我来说0.035应该会变成0.04还是我只是疯了?
编辑
请问到NebyGemini’s answer,我想我会这样做:
$t = 0;
$taxAmount = bcmul(bcdiv(5.000, 100, 3), 0.7, 3);
$t += $taxAmount;
var_dump($t); // float(0.035)
var_dump(round($t, 2)); // float(0.04)
var_dump(number_format($t, 2)); // string(4) "0.04"
哪个效果很好.
顺便说一句,我正在计算购物车中的税.订单总额为0.70(70美分),税率为5%.
编辑
请问到Ignacio Vazquez-Abrams’s answer,这是为了说明问题所在:
printf('%.18F', 5.000 / 100 * 0.7);
解决方法:
浮游物是邪恶的.
引用PHP manual documentation on Floating Point numbers:
So never trust floating number results to the last digit, and never compare floating point numbers for equality. If higher precision is necessary, the 07001 and 07002 functions are available.
如果您想知道浮标的工作原理和方式,我建议您观看:
Everything you didn’t want to know about JavaScript numbers
内容总结
以上是互联网集市为您收集整理的PHP舍入问题(5.2.3)?全部内容,希望文章能够帮你解决PHP舍入问题(5.2.3)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。