• ベストアンサー

小数点以下を含む計算でバグが生じてしまいます。

 プログラム中(VBscript)で、データベースから、商品データ(数値)を取り出して、過去のデータから現在のデータまでをどんどん値を引いていって、その経過を表示する、という引き算を繰り返す作業を行っているのですが、途中でバグが出てしまいます。  実際に取り出される数値としては、整数もしくは小数点以下第一位までの数値です。  どのようなバグが発生するかといいますと、たとえば、数値「5.6」から数値「2.4」を引いたら、表示が、「3.1999999999」などと表示されてしまうのです。  どのようにすれば解決されるのでしょうか。 初心者なので的外れな質問かもしれませんが、ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

表示だけの問題でしたら、最終表示の時に Dim Disp as String Dim Disp_data as Double Disp_Data = 3.1999999999 Disp = Format( Disp_Data, "#,##0.00") で、Dispを表示させれば直ります。 途中の計算結果も合わせるということであれば、 Dim Disp as String Dim Disp_data as Double Disp_Data = 3.1999999999 Disp = Format( Disp_Data, "#,##0.0") Data_Arry(i) = val(Disp) とすれば大丈夫なはずです。 これに四捨五入がからむと、ちょっとややこしくなりますが、数値化けでしたらこれで大丈夫なはずです。 うまくモデファイしてお使いください。

その他の回答 (1)

回答No.2

2進数表記にした時に循環小数になるような数値があると、単純な足 し算や引き算でも誤差が生じます。「丸め誤差」で検索してみると解 説が見つかりますので参照して下さい。 で、最大でも小数点以下1桁までと決まっているのなら、いったん10 倍して整数として演算してから元に戻すようにすれば回避できます。

関連するQ&A