Math.Round
方法有多个重载版本,其舍入行为取决于你使用的具体重载以及所采用的舍入模式。当出现 Math.Round(11.5)
结果为 12,Math.Round(-11.5)
结果为 -12 的情况,这与 Math.Round
默认使用的舍入模式有关,下面为你详细解释:Math.Round
方法默认使用的是 “四舍六入五取偶”(也称为 “银行家舍入法”)的舍入模式,该模式在国际标准 IEEE 754 中被定义,目的是为了减少在大量数据舍入计算时产生的累积误差。其规则如下:Math.Round(11.5)
Math.Round(-11.5)
MidpointRounding.AwayFromZero
参数,示例代码如下:using System; class Program { static void Main() { // 默认舍入模式(四舍六入五取偶) double result1 = Math.Round(11.5); double result2 = Math.Round(-11.5); Console.WriteLine($"默认舍入模式 - Math.Round(11.5): {result1}"); Console.WriteLine($"默认舍入模式 - Math.Round(-11.5): {result2}"); // 传统四舍五入模式 double result3 = Math.Round(11.5, MidpointRounding.AwayFromZero); double result4 = Math.Round(-11.5, MidpointRounding.AwayFromZero); Console.WriteLine($"四舍五入模式 - Math.Round(11.5): {result3}"); Console.WriteLine($"四舍五入模式 - Math.Round(-11.5): {result4}"); } }
MidpointRounding.AwayFromZero
指定传统的 “四舍五入” 模式进行计算并输出结果。当使用传统 “四舍五入” 模式时,Math.Round(11.5, MidpointRounding.AwayFromZero)
结果为 12,Math.Round(-11.5, MidpointRounding.AwayFromZero)
结果为 -11,这是因为按照 “四舍五入” 规则,正数 11.5 小数部分是 0.5 要进位得到 12,负数 -11.5 小数部分是 0.5 舍去小数部分得到 -11。这个也算最简单的了。只为只考虑三位数。
-- 钟铧若岩这个oracle的内部机制,不清楚啊。
-- 钟铧若岩
Copyright © 2025 钟铧若岩
Powered by .NET 9.0 on Kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?