4
回答
求问 php中double中数字的对比问题
华为云4核8G,高性能云服务器,免费试用   

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

intval(0.14 * 100) == 0.14 * 100  

????

PHP
举报
XiaoxGuo
发帖于1年前 4回/438阅
共有4个答案 最后回答: 1年前

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

--- 共有 1 条评论 ---
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); 1年前 回复

我想这个应该是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)

 

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

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

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)

 

顶部