从…起
MidpointRounding documentation
:
四舍五入到最接近的数字的策略,当一个数字在另外两个数字之间时,它会向离零最近的数字四舍五舍五入。
将45.4545四舍五入到2位小数意味着你要取45.45,并决定如何四舍四入.004。正如格里弗斯将军在评论中所说,这还不到另外两个的一半,它更接近于.00,而不是0.01,所以它将四舍五入到45.45,而不是45.46。
以下代码:
Console.WriteLine($"{Math.Round(45.451m, 2, MidpointRounding.AwayFromZero)} = Math.Round({45.451m}, 2, MidpointRounding.AwayFromZero)");
Console.WriteLine($"{Math.Round(45.452m, 2, MidpointRounding.AwayFromZero)} = Math.Round({45.452m}, 2, MidpointRounding.AwayFromZero)");
Console.WriteLine($"{Math.Round(45.453m, 2, MidpointRounding.AwayFromZero)} = Math.Round({45.453m}, 2, MidpointRounding.AwayFromZero)");
Console.WriteLine($"{Math.Round(45.454m, 2, MidpointRounding.AwayFromZero)} = Math.Round({45.454m}, 2, MidpointRounding.AwayFromZero)");
Console.WriteLine($"{Math.Round(45.455m, 2, MidpointRounding.AwayFromZero)} = Math.Round({45.455m}, 2, MidpointRounding.AwayFromZero)");
Console.WriteLine($"{Math.Round(45.456m, 2, MidpointRounding.AwayFromZero)} = Math.Round({45.456m}, 2, MidpointRounding.AwayFromZero)");
给出输出:
45.45 = Math.Round(45.451, 2, MidpointRounding.AwayFromZero)
45.45 = Math.Round(45.452, 2, MidpointRounding.AwayFromZero)
45.45 = Math.Round(45.453, 2, MidpointRounding.AwayFromZero)
45.45 = Math.Round(45.454, 2, MidpointRounding.AwayFromZero)
45.46 = Math.Round(45.455, 2, MidpointRounding.AwayFromZero)
45.46 = Math.Round(45.456, 2, MidpointRounding.AwayFromZero)
你可能在想
Math.Floor method
,请参阅及其在问题中的使用示例
Rounding down to 2 decimal places in c#
对于您问题中给出的示例:
Console.WriteLine($"{Math.Floor((45.4545) * 100) / 100} = Math.Floor((45.4545) * 100) / 100");
Console.WriteLine($"{Math.Floor((45.4541) * 100) / 100} = Math.Floor((45.4541) * 100) / 100");
Console.WriteLine($"{Math.Floor((45.4542) * 100) / 100} = Math.Floor((45.4542) * 100) / 100");
Console.WriteLine($"{Math.Floor((45.4543) * 100) / 100} = Math.Floor((45.4543) * 100) / 100");
Console.WriteLine($"{Math.Floor((45.4544) * 100) / 100} = Math.Floor((45.4544) * 100) / 100");
Console.WriteLine($"{Math.Floor((45.4545) * 100) / 100} = Math.Floor((45.4545) * 100) / 100");
Console.WriteLine($"{Math.Floor((45.4546) * 100) / 100} = Math.Floor((45.4546) * 100) / 100");
给出输出:
45.45 = Math.Floor((45.4545) * 100) / 100
45.45 = Math.Floor((45.4541) * 100) / 100
45.45 = Math.Floor((45.4542) * 100) / 100
45.45 = Math.Floor((45.4543) * 100) / 100
45.45 = Math.Floor((45.4544) * 100) / 100
45.45 = Math.Floor((45.4545) * 100) / 100
45.45 = Math.Floor((45.4546) * 100) / 100