我知道这些问题可能会被问到很多,但是从我的阅读和测试来看,它让我感到困惑,而且我所做的大量阅读让我更加困惑,因为它非常复杂.
有些人似乎有简单比较的问题,但我自己没有问题.
例如…
$num1 = 27.64; $num2 = 27.64; if ($num1 == $num2) { echo 'Good!'; } else { echo 'Bad!'; } // Echo's "Good!"
…和
$num1 = 27.60; $num2 = 27.6; if ($num1 == $num2) { echo 'Good!'; } else { echo 'Bad!'; } // Echo's Good
…和
$num1 = 27.60; $num2 = 57.60; if ($num1 <= $num2) { echo 'Good!'; } else { echo 'Bad!'; } // Echo's Good
…和
$num1 = 25.00; $num2 = 12.50 + 12.5; if ($num1 == $num2) { echo 'Good!'; } else { echo 'Bad!'; } // Echo's Good
然后我看到像http://patchlog.com/php/comparing-float-values-in-php/这样的页面似乎有简单的问题,我不明白.
解决方法
例1
这些值将是相同的 – 您为每个变量分配相同的十进制文字.将其与此代码进行比较:
$num1 = 27.64; $num2 = 10.0 + 2.88 + 2.88 + 2.88 + 9.0; //In decimal arithmetic adds to 27.64 if ($num1 == $num2) { echo 'Good!'; } else { echo 'Bad!'; } // Echo's "Bad!"
$num2看起来应该是27.64,但它确实增加了像27.639999999999997015720509807579219341278076171875(这是我在我的机器上用Visual C进行计算时得到的). $num1 = 27.6400000000000005684341886080801486968994140625(在我的机器上),所以它们有所不同.
例2
尾随0没有区别.
例3
数字不在浮点“容差”范围内,因此当然会有所不同.
例4
12.5在浮点中是完全可表示的,因此12.5 12.5也是(0.5是2 ^ -1).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。