• ベストアンサー

PowerBuilderのDOUBLEデータ型について

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

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

一般的に、コンピュータでは、0.1を正確に表現することが苦手です。 それは、0.1が2進数で記数できないことに端を発します。 なので、PBのバグというより、Doubleの仕様というかそういうものです。 10進の記数で表現できる型があれば、それを使えばいいのですが、そういうのは、計算機にとっては、あまり効率的ではなく負荷が大きいです。

mitu_fu
質問者

お礼

ご回答ありがとうございます やはりそうなのですね・・ ちなみにVBで同様のコードを書いても同様な結果でした とりあえずPBのDecimalというデータ型を使うといける ようなので、そちらでやります。

すると、全ての回答が全文表示されます。

関連するQ&A