Silverlight - 圆形从零开始加倍

时间:2010-05-31 09:19:30

标签: silverlight math

在Silverlight中,Math.Round()方法不包含带有“MidpointRounding”参数的重载。在这种情况下,在Silverlight中将双倍舍入为零的最佳方法是什么?

示例:

Math.Round(1.4)=> 1

Math.Round(1.5)=> 2

Math.Round(1.6)=> 2

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