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

当方PowerBuilder7で作成されたシステムを検証しています
そこで・・
Double 変数1
Double 変数2
Double 変数3
変数1 = 10
変数2 = 10.1
変数3 = 変数1 - 変数2
というコードがあります
単純に考えると「変数3」には「-0.1」が正解ですよね?
しかし、実際実行してみると「-0.09999999999」となって
しまいます。
Doubleの仕様なのか PBのバグなのかまったく分かりません

この現象を説明できる方・説明している頁をご存知の方、
ご教授よろしくお願いします。

A 回答 (1件)

一般的に、コンピュータでは、0.1を正確に表現することが苦手です。


それは、0.1が2進数で記数できないことに端を発します。
なので、PBのバグというより、Doubleの仕様というかそういうものです。
10進の記数で表現できる型があれば、それを使えばいいのですが、そういうのは、計算機にとっては、あまり効率的ではなく負荷が大きいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます
やはりそうなのですね・・
ちなみにVBで同様のコードを書いても同様な結果でした

とりあえずPBのDecimalというデータ型を使うといける
ようなので、そちらでやります。

お礼日時:2005/01/26 11:34

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