如何在Delphi中将C#相似的Math.RoundMidpointRounding.AwayFromZero一起使用?

相当于什么:

double d = 2.125;
Console.WriteLine(Math.Round(d, 2, MidpointRounding.AwayFromZero));

输出:2.13
在德尔福?

最佳答案

您要查找的是SimpleRoundTo函数和SetRoundMode组合。如文档所述:

请注意,该函数的第二个参数是TRoundToRange,它是指指数(10的幂),而不是.NET的Math.Round方法中的小数位数字。因此,要舍入到小数点后2位,请使用-2作为舍入范围。

uses Math, RTTI;

var
  LRoundingMode: TRoundingMode;
begin
  for LRoundingMode := Low(TRoundingMode) to High(TRoundingMode) do
  begin
    SetRoundMode(LRoundingMode);
    Writeln(TRttiEnumerationType.GetName(LRoundingMode));
    Writeln(SimpleRoundTo(2.125, -2).ToString);
    Writeln(SimpleRoundTo(-2.125, -2).ToString);
  end;
end;

关于c# - 在Delphi中,Math.Round()与MidpointRounding.AwayFromZero等效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56732297/

10-14 21:20