掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
計算結果を正しく求めるには? (ID:5170)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
とりあえず... ShowMessage( IntToStr(Round( d1 * d2 )) ); もしくは... ShowMessage( FormatFloat('#',d1 * d2)); で正しい結果になると思います。 これは、実数型であればDelphiに限らず起こる現象です。 d1 * d2は、1020ですが内部では1019.9999...となっています。 Truncは、それを単純に整数に変換するため1019となります。 Roundは、それの近似値を計算して整数に変換するので1020となります。 d1,d2をExtended型にすると精度が高くなるので回避できるかもしれませんがVariantに代入すると内部的にいったんDoubleに変換されるようなのでダメみたいです。(推測です。) 実数型は、多かれ少なかれ誤差を生じるものなので注意してください。可能であれば整数型が金額型を使ったほうが良いと思います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.