数値を丸めたいので、配列キーとして使用したいので適切な整数が必要です。最初の「解決策」は次のとおりです。整数へのPHPの換算
$key = (int)round($number)
ただし、これが常に機能するかどうかはわかりません。私が知る限り、(int)
は任意の小数点以下を切り捨てるだけで、round($number)
は理論的に精度が限定された浮動小数点数を返しますので、round($number)
は7.999999 ...のようなものを返し、次に$key
は8ではなく7ですか?
この問題が実際に存在する場合(私はそれをテストする方法はわかりません)、どのように解決できますか?多分:
$key = (int)(round($number) + 0.0000000000000000001) // number of zeros chosen arbitrarily
もっと良い解決策がありますか?最も近い整数に
浮動小数点数に格納される整数は常に正確に約2^51までです。これは、とにかく 'int'に格納できるよりはるかに多くなります。あなたは何も心配していません。 –
@NiettheDarkAbsolおっと、私は実際に(Javascriptから)知っていましたが、接続していませんでした。あなたはそれを答えるべきです。 BTW、JSでは2^53-1 iircです。 – AndreKR
丸められた数字をキーとして使うと、丸められた8の結果を持つ7.xの数字が2つ以上あると問題が起きます。 –