PHP中浮点数精度的警告
这个是php document中给出来的提示:
简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。
floor(( 0.1 + 0.7 ) * 10)? ?返回 7 而不是8,
(int)(( 0.1 + 0.7 ) * 10) ?返回7而不是8.
?
立即学习“PHP免费学习笔记(深入)”;
对这种现象的解释是“因为该结果内部的表示其实是类似 7.9”。
?
立即学习“PHP免费学习笔记(深入)”;
所以得到的结论是:
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
决不要将未知的分数强制转换为Int。
?
立即学习“PHP免费学习笔记(深入)”;
(int)round( 0.1 + 0.7 ) * 10) 这样似乎就安全了。
在有大量乘除或者是中间值为float类型时,为了数值精度还是使用BC math函数了。
?
立即学习“PHP免费学习笔记(深入)”;
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号