在Silverlight中,Math.Round()方法不包含带有“MidpointRounding”参数的重载。在这种情况下,在Silverlight中将双倍舍入为零的最佳方法是什么?
示例:
Math.Round(1.4)=> 1
Math.Round(1.5)=> 2
Math.Round(1.6)=> 2
答案 0 :(得分:1)
任何数量的“黑客”都会这样做,例如:
Public Shared Function SpecialRound(ByVal inVal) As Double
if (inVal < 0)
Return Math.Ceil(inVal-0.5)
Return Math.Floor(inVal+0.5)
End Function
我不知道这是一种“好”的方式。
答案 1 :(得分:1)
public double RoundCorrect(double d, int decimals)
{
double multiplier = Math.Pow(10, decimals);
if (d < 0)
multiplier *= -1;
return Math.Floor((d * multiplier) + 0.5) / multiplier;
}
有关如何将其用作扩展程序的示例,请参阅帖子:.NET and Silverlight Rounding