如何在Delphi中将C#相似的Math.Round
与MidpointRounding.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/