PHP 建议使用这些函数进行浮点数比较 [这里]
bccomp — 比较两个任意精度数
int bccomp ( string $left_operand , string $right_operand [, int $scale ] )
gmp_cmp — 比较数字
int gmp_cmp ( resource $a , resource $b )
我使用了 bccomp但我仍然无法得到正确的结果:
<?php
$n1 = bcdiv(1, 2.36, 4);
$n2 = bcdiv(4237288, 10000000, 4);
echo bccomp( $n1, $n2, 4); // 0! must be 1
echo "<br>\n";
var_dump(bcdiv(1, 2.36, 4)); // string(6) "0.4237"
echo "<br>\n";
var_dump(bcdiv(4237288, 10000000, 4)); // string(6) "0.4237"
?>
到目前为止,我知道1/2.36的结果等于(0.4237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406......)
那么,我怎么知道这样的小数位数很大呢?
可能的解决方案:
$n1 = bcdiv(1, 2.36, 400);
$n2 = bcdiv(4237288, 10000000, 400);
echo bccomp( $n1, $n2, 400); //1
我认为这个解决方案直到不再可用。
有什么建议吗?