如何使用Math.Round舍入精确的double值

时间:2012-08-27 08:11:53

标签: c# double

我想把目前的双重值四舍五入给我... ...

val = 0.01618

Math.Round(val,2) 

0.02(目前正在这样做)。

0.01(我想要这样)。

4 个答案:

答案 0 :(得分:3)

我认为,

Math.Floor()正是您所寻找的。如果要舍入到两个小数符号,可以执行Math.Floor(v*100)/100。我想知道为什么Floor没有超载占用小数位数。

答案 1 :(得分:1)

你想要的是Math.Floor()或类似的东西(不要没有c#,对不起)。这总是向下舍入。 Math.Round()就像描述here一样。

答案 2 :(得分:0)

这将向下舍入您想要的地方;

Math.Round(val - 0.005, 2) 

答案 3 :(得分:0)

您可以使用Math.Floor将其设置为您的首选值,然后使用Math.Round将其设置为2位小数,如下所示:

// Returns double that is rounded and floored
double GetRoundedFloorNumber(double number, int rounding)
{
    return ((Math.Floor(number * (Math.Pow(10, rounding))) / Math.Pow(10, rounding)));

}

所以调用这个函数应该返回正确的数字:

示例代码:

    static void Main(string[] args)
    {
        // Writes 0.016 to the screen
        Console.WriteLine(GetRoundedFloorNumber(0.01618, 3));
        Console.ReadLine();
    }

    static double GetRoundedFloorNumber(double number, int rounding)
    {
        return ((Math.Floor(number * (Math.Pow(10, rounding))) / Math.Pow(10, rounding)));

    }