首页 / PHP / php整数和浮点数比较不匹配
php整数和浮点数比较不匹配
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php整数和浮点数比较不匹配,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含975字,纯文字阅读大概需要2分钟。
内容图文
![php整数和浮点数比较不匹配](/upload/InfoBanner/zyjiaocheng/712/55fc65af69b348d194e2db01e253246e.jpg)
我有以下代码
$amount1 = 7299;
$amount2 = 72.9875;
$amount2_in_cents = round($amount2, 2) * 100;
if ($amount1 != $amount2_in_cents) {
echo "Amount $amount1 != $amount2_in_cents\n";
var_dump($amount1);
var_dump($amount2_in_cents);
} else {
echo "Amounts matched";
}
这是输出
Amount 7299 != 7299
int(7299)
float(7299)
现在我意识到浮点数和整数是不同的,但考虑到四舍五入,我希望这两个值匹配.我通过转换为int来解决它.
所以我的问题是为什么这种比较不能像我预期的那样工作(两个值匹配)?
解决方法:
请注意0??7000中的大红色警告!
比较花车时从不期待任何事情.即使精度为0,舍入的结果仍然是浮点数.在你的特定情况下,碰巧结果比预期的要大一些,所以转换为int会导致相等,但是对于其他数字,它可能会比它预期的要小一些,并且转换为int将不会舍入它,但截断它,所以你不能使用转换作为一种解决方法. (作为一个注释,一个比你的更好的解决方案将转换为字符串:),但仍然是一个糟糕的选择.)
如果您需要使用金额,请始终使用BC Math extension.
对于使用BC Math进行舍入,您可以使用以下技术:
$x = '211.9452';
$x = bcadd($x, '0.005', 2);
祝好运,
阿林
内容总结
以上是互联网集市为您收集整理的php整数和浮点数比较不匹配全部内容,希望文章能够帮你解决php整数和浮点数比较不匹配所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。