今書いてるプログラムが、誤差が出ないようにと私の持てる全ての力をつぎ込んではいるのだが、・・・
JavaScriptには、C言語やFortranのような明確な整数型という変数が存在しない。
それゆえ、FortranやCでプログラムを覚えたものとしては、計算が面倒である。
数学的には、
0.{9}=1.{0}=1
{}内は循環節
ということが解ってはいる。
JavaScriptには整数型変数がないので、一見すると整数同士の四則演算をしたにも関わらず、小数点以下に9や0が列び、末尾に残骸を残す。
では、9や0が何個続けば、それは有限小数や整数なのだろうか。
これはなんともいえない。
なぜなら、整数部分の桁数が何桁なのかも考えなければならなくなるからだ。
私がC言語を覚えたてのころによく使っていた方法として、
10の冪乗倍して、0.5を加え、整数化して、10の冪乗で割る。
ということをしていた。
また、はなから整数同士の四則演算しか行わないということが解っていて、値は無理数にならず、必ず有理数であるというような場合は、分母・分子を整数とするような有理数型変数を作って計算していた。
今回のプログラムも、分母・分子を変数としてやってはいるのだが、整数型がないということによる不便を強いられる。
↧
JavaScriptの計算誤差に悩まされる
↧