了解php中的浮点数
发布时间:2020-12-13 17:41:45 所属栏目:PHP教程 来源:网络整理
导读:我知道这些问题可能会被问到很多,但是从我的阅读和测试来看,它让我感到困惑,而且我所做的大量阅读让我更加困惑,因为它非常复杂. 有些人似乎有简单比较的问题,但我自己没有问题. 例如… $num1 = 27.64;$num2 = 27.64;if ($num1 == $num2) { echo 'Good!';} el
我知道这些问题可能会被问到很多,但是从我的阅读和测试来看,它让我感到困惑,而且我所做的大量阅读让我更加困惑,因为它非常复杂.
有些人似乎有简单比较的问题,但我自己没有问题. 例如… $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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |