加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

了解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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读