我想把目前的双重值四舍五入给我... ...
val = 0.01618
Math.Round(val,2)
0.02
(目前正在这样做)。
0.01
(我想要这样)。
答案 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)));
}