浮動小数点数を小数点以下第2位まで四捨五入する必要がありますが、常に下げてください。今私はRoundTo(number, -2)
を使用していますが、私の状況では望ましくない動作であり、数学的に正しく丸めます。Delphi - RoundTo - always down
var a,b: currency;
floatStr: string;
format: TFormatSettings;
localeDec: char;
begin
format:= TFormatSettings.Create;
localeDec:= format.DecimalSeparator;
format.DecimalSeparator:= ',';
System.SysUtils.FormatSettings:= format;
a:= 2/30;
floatStr:= floatToStr(a);
b:= strToCurr(
copy(floatStr, 1, ansiPos(',', floatStr) + 2)
);
showMessage(currToStr(b));
format.DecimalSeparator := localeDec;
System.SysUtils.FormatSettings:= format;
end;
しかし、この解決策はちょうどいい感じていない:私は最終的にこれを使用してそれを達成
...私はさておき、これを実行する必要がある理由、してみましょう。文字列をつぶしたり、小数点区切り文字をリセットしたりすることなく、「数学的にきれいな」方法がありますか?私は多くを探しましたが、何も見つかりませんでした。
最近のバージョンで変更されました。 – kludg
@ user246408私は実際に整数演算を使ってすべてを行う方が良いと思います。 –