計算結果が...

[上に] [前に] [次に]
おかめ 1998/12/03(木) 15:15:39
初めて質問します。NetScape4.05(Win95)で表計算をするJavaScriptを
作りましたが、計算結果がおかしくなります。具体的には、
999999999999999.9を3回たすと、2999999999999999.5になったりします。
  wkSum = 0;
  For ( i=1;i<20;i++){
    wkSum+=eval(form_name[text_name].value);
  }
このようなJavaScriptで処理を行っています。他にも小数点以下1桁
のもの同士を加算した結果が、小数点以下2桁以上になったりしてい
ます。どんな値を入力しても起きるわけではなく、困っています。
みなさま、どうか助言の方よろしくお願いいたします。

mura 1998/12/03(木) 17:05:04
999.9ぐらいなら問題ないですが、計算精度ぎりぎりの時は
書いた通りの値として処理していない(2進数で表せる近似値で計算している)ので
このようになっているのではないかと思います。
(内部処理の本当のところは私ははわからないので想像です)

整数でも9999999999999999(9を16個)を3回足すと
30000000000000000になりました。
対処方法は他の方にお任せします。上位桁と下位桁を分けて計算するだけでいいのかな??

おかめ 1998/12/11(金) 10:37:02
muraさん、レスどうもです。
やっぱりそのまま計算するのは無理ですかねぇ。1や2の羅列では
きちんと計算されるみたいなのに。
そもそも、そんな計算をWebでするのがいけないんでしょうか?でも
仕様なのでしかたないんですけど。

[上に] [前に] [次に]