掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バージョンでTrunc結果が異なる (ID:49598)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Mr.XRAYさん、実験ありがとうございます。 私の言葉足らずで、お時間を無駄にして申し訳ありません。 私のソフトはアドバンスソフトウェア株式会社さんのExcelCreatorを利用しております。 このExcelCreatorのdllをLoadLibrary() でインポートすると、 Trunc( 5 * 0.01 * 100 ) = 4 という現象が再現できます。 ExcelCreatorの後始末に問題があるのだと思います。 そこで以下のように修正する事で解決いたしました。 LoadLibrary( PChar( dllName ) ); ↓ SafeLoadLibrary( PChar( dllName ) ); ちなみにSafeLoadLibrary()を利用しない場合でも、 一度Double型のローカル変数に格納後、Truncをすれば答えは5になりました。 Trunc(5 * 0.01 * 100); ↓ ttt := 5 * 0.01 * 100; Trunc(ttt); FPUのレジスター上ではなく、CPUのスタック領域に作成された為だと思います。 以上、よろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.