1

我想准确地舍入当前它给我的双值......

val = 0.01618

Math.Round(val,2) 

0.02(目前它是这样给的)。

0.01(我想要这样)。

4

4 回答 4

3

Math.Floor()是你要找的,我想。如果你想四舍五入到两位小数,你可以这样做Math.Floor(v*100)/100。我想知道为什么没有Floor小数位数的过载。

于 2012-08-27T08:13:44.327 回答
1

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

于 2012-08-27T08:15:36.413 回答
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)));

    }
于 2012-08-27T08:58:59.100 回答
0

这将在您想要的地方四舍五入;

Math.Round(val - 0.005, 2) 
于 2012-08-27T08:27:03.283 回答