美文网首页PHP程序员
PHP面试题:intval((0.1+0.7)x10)=?

PHP面试题:intval((0.1+0.7)x10)=?

作者: php转go | 来源:发表于2020-09-24 09:46 被阅读0次

    直接用PHP执行时

    var_dump((0.1+0.7)*10); #double(8)
    var_dump(intval((0.1+0.7)*10)); #int(7)
    

    主要是十进制分数如同0.1或0.7不能在不丢失一点点精度的情况下转换为内部二进制的格式
    (0.1+0.7)*10)得出的结果实际是浮点型,值是7.9999...,一个无限接近于8的值
    所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
    这个是计算机系统自身问题,不是PHP特有的特性

    echo intval( (string) (0.1+0.7)*10 ); #8
    

    相关文章

      网友评论

        本文标题:PHP面试题:intval((0.1+0.7)x10)=?

        本文链接:https://www.haomeiwen.com/subject/jehzyktx.html