アプリ版:「スタンプのみでお礼する」機能のリリースについて

 プログラム中(VBscript)で、データベースから、商品データ(数値)を取り出して、過去のデータから現在のデータまでをどんどん値を引いていって、その経過を表示する、という引き算を繰り返す作業を行っているのですが、途中でバグが出てしまいます。

 実際に取り出される数値としては、整数もしくは小数点以下第一位までの数値です。

 どのようなバグが発生するかといいますと、たとえば、数値「5.6」から数値「2.4」を引いたら、表示が、「3.1999999999」などと表示されてしまうのです。

 どのようにすれば解決されるのでしょうか。
初心者なので的外れな質問かもしれませんが、ご回答よろしくお願いします。

A 回答 (2件)

表示だけの問題でしたら、最終表示の時に


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)
とすれば大丈夫なはずです。
これに四捨五入がからむと、ちょっとややこしくなりますが、数値化けでしたらこれで大丈夫なはずです。
うまくモデファイしてお使いください。
    • good
    • 0

2進数表記にした時に循環小数になるような数値があると、単純な足


し算や引き算でも誤差が生じます。「丸め誤差」で検索してみると解
説が見つかりますので参照して下さい。

で、最大でも小数点以下1桁までと決まっているのなら、いったん10
倍して整数として演算してから元に戻すようにすれば回避できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!