php数值运算之后比较结果不正确
发表于:2024-07-10 13:53:16浏览:144次
引言
php中运算后的数值,若是浮点型float,拿来直接比较,结果可能会不正确。
结论
要进行的数值若是通过计算得出,则必须转成字符串型才可以比较
示例
sprintf("%.3f",0.14764)
返回的是一个字符串,再运算,后的值直接比较是错误的。要想得到正确的值,需要转成字符串
型才是正确
$a = sprintf("%.3f",0.14764)*100;
// 或是 $a = 0.148*100;
$b = 14.8;
$is = $a < $b;
var_dump($a); // 输出:float(14.8)
var_dump($b); // 输出:float(14.8)
var_dump($is); // 输出:bool(true) // 这是错误的
$a = (string)$a;
$b = (string)$b;
$is = $a < $b;
var_dump($a); // 输出:string(4) "14.8"
var_dump($b); // 输出:string(4) "14.8"
var_dump($is); // 输出:bool(false) // 这是正确的
sprintf("%.3f",0.14764)
返回的是一个字符串,直接比较是正确的
$a = sprintf("%.3f",0.14764);
$b = 14.8;
$is = $a < $b;
var_dump($a); // 输出:string(4) "14.8"
var_dump($b); // 输出:float(14.8)
var_dump($is); // 输出:bool(true) // 这是正确的
栏目分类全部>