C# Math.Round 四舍五入

本文详细解析了C#中使用Math.Round方法进行小数四舍五入的具体规则,包括默认的舍入方式和MidpointRounding.AwayFromZero模式下小数点后第二位的处理方式,通过实例展示了不同情况下数值的精确舍入结果。
Console.WriteLine(Math.Round((decimal)0.6, 2));		//输出0.6
Console.WriteLine(Math.Round((decimal)0.609, 2));	//输出0.61
Console.WriteLine(Math.Round((decimal)0.645, 2));	//输出0.64
Console.WriteLine(Math.Round((decimal)0.795, 2));	//输出0.80
Console.WriteLine(Math.Round((decimal)9.568, 2));	//输出9.57

Console.WriteLine(Math.Round((decimal)0.6, 2, MidpointRounding.AwayFromZero));		//输出0.6
Console.WriteLine(Math.Round((decimal)0.609, 2, MidpointRounding.AwayFromZero));	//输出0.61
Console.WriteLine(Math.Round((decimal)0.645, 2, MidpointRounding.AwayFromZero));	//输出0.65
Console.WriteLine(Math.Round((decimal)0.795, 2, MidpointRounding.AwayFromZero));	//输出0.80
Console.WriteLine(Math.Round((decimal)9.568, 2, MidpointRounding.AwayFromZero));	//输出9.57
C# 中的 `Math.Round` 方法用于将值按指定的规则进行舍入操作。`Math.Round` 提供了多个重载方法,常用的有两个:`public static double Round (double value, int digits, MidpointRounding mode);` 和 `public static decimal Round (decimal d, int decimals, MidpointRounding mode);` [^1]。 ### 使用指南 - **参数说明**: - `value` 或 `d`:要进行舍入的值,可以是 `double` 或 `decimal` 类型。 - `digits` 或 `decimals`:要保留的小数位数。 - `mode`:舍入模式,它是 `MidpointRounding` 枚举类型,常用的舍入模式有: - `MidpointRounding.ToEven`:四舍六入五成双,即当要舍入的数字为 5 时,会将结果舍入为最接近的偶数。这是 `Math.Round` 方法的默认舍入模式。 - `MidpointRounding.AwayFromZero`:四舍五入,当要舍入的数字为 5 时,会将结果舍入为远离零的方向。 ### 示例代码 ```csharp using System; class Program { static void Main() { // 默认舍入模式(四舍六入五成双) Console.WriteLine(Math.Round(0.4)); // 输出: 0 Console.WriteLine(Math.Round(0.6)); // 输出: 1 Console.WriteLine(Math.Round(0.5)); // 输出: 0 Console.WriteLine(Math.Round(1.5)); // 输出: 2 Console.WriteLine(Math.Round(2.5)); // 输出: 2 // 指定保留小数位数 double num = 3.14159; double rounded = Math.Round(num, 2); Console.WriteLine(rounded); // 输出: 3.14 // 指定舍入模式为四舍五入 decimal decimalNum = 2.5m; decimal roundedDecimal = Math.Round(decimalNum, 0, MidpointRounding.AwayFromZero); Console.WriteLine(roundedDecimal); // 输出: 3 } } ``` ### 注意事项 - **舍入模式**:默认的舍入模式是四舍六入五成双,而不是传统的四舍五入。如果需要使用四舍五入,需要显式指定 `MidpointRounding.AwayFromZero` 模式 [^2]。 - **性能考虑**:在处理大量数据时,频繁调用 `Math.Round` 方法可能会影响性能,特别是当使用的是 `decimal` 类型时,因为 `decimal` 类型的运算相对较慢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值