关于浮点型的运算---比较
Posted xiaommvik
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于浮点型的运算---比较相关的知识,希望对你有一定的参考价值。
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;
相同小数是相同的
以上是关于关于浮点型的运算---比较的主要内容,如果未能解决你的问题,请参考以下文章