Currency型の小数演算結果が不正
|
Currency型で小数点以下の計算をすると、環境によっては結果が期待した値にならない場合があるそうです。
[例]
procedure TForm1.Button1Click(Sender: TObject);
var
num1, num2: Currency;
ret: string;
begin
num1 := StrToCurr('888888888888888.8888');
num2 := StrToCurr('0.8888');
ret := FormatCurr('#,##0.0000', num1 - num2);
ShowMessage(ret);
end;
この結果が『888888888888888.0128』になります。
この問題を解決するには、Currency や Extended 型の演算を行う前に、Set8087CW(Default8087CW); なるおまじないを入れておけばよいらしい。プロジェクトソースの一行目にでも書いておきましょう。
未確認ながら Delphi4 では治っていると言う報告があります。
[例]
begin
Set8087CW(Default8087CW);
num1 := StrToCurr('888888888888888.8888');
|
|