我想准确地舍入当前它给我的双值......
val = 0.01618
Math.Round(val,2)
0.02
(目前它是这样给的)。
0.01
(我想要这样)。
Math.Floor()
是你要找的,我想。如果你想四舍五入到两位小数,你可以这样做Math.Floor(v*100)/100
。我想知道为什么没有Floor
小数位数的过载。
你想要的是 Math.Floor() 或类似的东西(不要没有 c#,对不起)。这总是四舍五入。Math.Round() 就像这里描述的那样。
您可以使用 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)));
}
这将在您想要的地方四舍五入;
Math.Round(val - 0.005, 2)