微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解php中的浮点数

我知道这些问题可能会被问到很多,但是从我的阅读和测试来看,它让我感到困惑,而且我所做的大量阅读让我更加困惑,因为它非常复杂.

有些人似乎有简单比较的问题,但我自己没有问题.

例如…

$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 举报,一经查实,本站将立刻删除。

相关推荐