作业帮 > 数学 > 作业

php为什么会出现0.3不等于0.3

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/06/04 12:38:16
php为什么会出现0.3不等于0.3
简单代码如下:
php
$a = '0.1';
$b = true;
$c = 0;
if($b){
\x05$c += $a;
\x05echo 'c = 0.1 ';
\x05echo $c == '0.1' 'true' :'false';
\x05echo '
';
}
if($b){
\x05$c += $a;
\x05echo 'c = 0.2 ';
\x05echo $c == '0.2' 'true' :'false';
\x05echo '
';
}
if($b){
\x05$c += $a;
\x05echo 'c = 0.3 ';
\x05echo $c == '0.3' 'true' :'false';
\x05echo '
';
}
if($b){
\x05$c += $a;
\x05echo 'c = 0.4 ';
\x05echo $c == '0.4' 'true' :'false';
\x05echo '
';
}
echo '
d = 0.3 true
d = 0.6 true
d = 0.9 false
d = 1.2 true
按理c = 0.3 和 d = 0.9 都应为 true 才对啊
这是为什么呢?
php为什么会出现0.3不等于0.3
0.3这个浮点数只是一个近似的数,具体解释就是计算机是用0、1表示数据的.小数的0.3是无穷下去的,并不是像表示整数那样精确没有偏差.既然它只是一个约数,那么你用精确的==来比较两位不精确的约数就没有太大意义了.如果一定要比较两个浮点数,可以考虑先转换成字符串,然后再去比较.