PHP 浮動小数点数の比較にこれらの関数を使用することをお勧めします [こちら]
bccomp — 2 つの任意精度数を比較する
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
この解決策は、これ以上使い物にならないと思います。
なにか提案を?