标签:bool letter 否则 总结 poi ffffff cursor sans word
1.常见问题
$a = 0.1; $b = 0.7; var_dump(($a + $b) == 0.8);
打印出来的值居然为 boolean false
printf("%.20f", $a); printf("%.20f", $b); 0.10000000000000000555 0.69999999999999995559
显然是不相等的。
对于常用金额数据比较
$a = 456;
$b = 4.56;
$a == $b*100 是不成立的
printf("%.20f", $a); printf("%.20f", $b*100); 456.00000000000000000000 455.99999999999994315658
显然也是不成立的
2.解决办法(总结的以下方式)
1)bccomp ( string $left_operand
, string $right_operand
[, int $scale
= int ] ) 高精度的比较两个浮点数(字符串)
如果两个数相等返回0, 左边的数left_operand
比较右边的数right_operand
大返回1, 否则返回-1.
2)
$scale = 0.00001 $a = 0.6995559; $b = 0.6995552; $a - $b < $scale $scale 小数点后5位比较 $a == $b
3)$a /100 == $b;
相同小数是相同的
标签:bool letter 否则 总结 poi ffffff cursor sans word
原文地址:https://www.cnblogs.com/xiaommvik/p/9488881.html