console.log((57 / 100) * 100);
Javascript でこの計算を行うと、常に 56.99999999 が返されます。なぜ57.00000ではないのですか?
console.log((57 / 100) * 100);
Javascript でこの計算を行うと、常に 56.99999999 が返されます。なぜ57.00000ではないのですか?
正確な答えを得るには、整数で作業するか、10 進ライブラリを使用する必要があります。整数を使用して値を計算し、値を 10 進数に変換する Javascript 用の 10 進数ライブラリがいくつかあります。たとえば、Javascript 用のBigNumberライブラリがあります。
この理由は、セクションがFloatまたは Javascript の浮動小数点数を(57 / 100)
返すためです。JavaScript は64 ビットの浮動小数点数を使用します。ほとんどのシステムでは、浮動小数点数 (3.2e4 の 3.2) の仮数または数値部分を表すために 53 ビットの精度が与えられます。ほとんどのシステムはIEEE-754浮動小数点標準を使用しており、最後の桁が 1 ユニット未満である限り、浮動小数点演算のエラーを許容します (IEEE-754 64 ビットの場合は 54 ビット目)。 . したがって、すべての浮動小数点数は切り捨てられ、丸められ、切り捨てられます。これが、結果が小数を返す理由です。
これが発生する理由の詳細については、以下も参照してください:浮動小数点演算は壊れていますか?