求问 php中double中数字的对比问题

XiaoxGuo 发布于 2017/03/27 11:30
阅读 440
收藏 0
PHP

这个是用两个等号的比较 , 但是是报的这个结果!!求大神解答. . .

intval(0.14 * 100) == 0.14 * 100  

????

加载中
0
a
astars

echo gettype(intval(0.14 * 100));
echo gettype(0.14 * 100);

 

去分别打印下他们的类型

0
大賢者
大賢者

float double 判断相等 要用大于小于 而不是等于,基础知识

X
XiaoxGuo
那请看看这里的结果 与运行的代码 , 这怎么比较呢? 因为没法贴图 , 只能复制了;; int(14) double(15) bool(true) $num_fen = intval(round($num * 100)); $num = $num * 100 + 1; var_dump($num_fen);var_dump($num);vardump($num_fen <> $num);
0
裴宝亮
裴宝亮

我想这个应该是PHP的计算精度的问题。

$a =  intval(0.14 * 100) == 0.14 * 100;
var_dump($a);// bool(false)

$b = intval(bcmul(0.14, 100)) == bcmul(0.14, 100);
var_dump($b);// bool(true)

 

0
大洋的顶端
大洋的顶端

编译型语言中,首先编译器得报错,因为类型不一样。

脚本语言中的话,得看各门语言的区别了。

python中是可以通过编译的。

i=float(10)
b=int(10)
print(i==b)

输出结果:True 

 

而GO中

    a := float32(10)
    b := int(10)
    fmt.Println(a == b)

invalid operation: a == b (mismatched types float32 and int)

 

返回顶部
顶部