-1

重複の可能性:
Javascript 数学エラー: 不正確な浮動小数点数

これは私がしました

this.cues = []
for(var i, i = 1; i <= 8; i++){
    cue = this.length * (i/8.0)
   this.cues.push(cue)

this.length は double です。除算を確認したところ、配列の 4 番目のセルまで .000002 ずれていることがわかりました。

  1. 誰もが考えられるJavaScript固有の原因はありますか? ただの環境かもしれませんので、そうでなければ大したことはありません
  2. もしそうなら、私はそれを修正できますか?

よろしくお願いします

4

2 に答える 2

0

これは予想されます。コンピューターでの浮動小数点演算は、コンピューターの内部に格納される方法のため、このような小さな精度エラーがあります。詳細については、すべてのコンピューター科学者が浮動小数点演算について知っておくべきことを読むことをお勧めします。

無限に多くの実数を有限のビット数に圧縮するには、近似表現が必要です。整数は無限にありますが、ほとんどのプログラムでは、整数計算の結果を32ビットで格納できます。対照的に、ビット数が固定されている場合、実数を使用したほとんどの計算では、その数のビットを使用して正確に表すことができない量が生成されます。したがって、浮動小数点計算の結果は、有限表現に戻すために丸められることがよくあります。この丸め誤差は、浮動小数点計算の特徴です。

于 2012-07-01T19:29:18.820 に答える
0

すべてのプログラマーが浮動小数点演算について知っておくべきことを読む必要があります。これは、コンピューター上で浮動小数点数がどのように表されるかを示しています。

于 2012-07-01T19:30:56.167 に答える