Math.Round()函数说明

Math.Round()并不是严格意义上的是四舍五入函数。它默认的执行的是"银行家舍入"算法,即四舍六入五取偶。概括为:四舍六入五考虑、五后非零就进一,五后皆零看奇偶,五前为偶应舍去、五前为奇要进一。

当为5时,取离着最近的偶数。见下图:

测试代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace MathRoundTest

{

class Program

{

static void Main(string\[\] args)

{

Console.WriteLine(Math.Round(1234.5).ToString()); //输出:1234

Console.WriteLine(Math.Round(1234.50).ToString()); //输出:1234

Console.WriteLine(Math.Round(1235.5).ToString()); //输出:1236

Console.WriteLine(Math.Round(1235.50).ToString()); //输出:1236

Console.WriteLine("---------------------------------------------");

Console.WriteLine(Math.Round(-1234.5).ToString()); //输出:-1234

Console.WriteLine(Math.Round(-1234.50).ToString()); //输出:-1234

Console.WriteLine(Math.Round(-1235.5).ToString()); //输出:-1236

Console.WriteLine(Math.Round(-1235.5).ToString()); //输出:-1236

Console.WriteLine("---------------------------------------------");

Console.WriteLine(Math.Round(123.45, 1).ToString()); //输出:123.4

Console.WriteLine(Math.Round(123.55, 1).ToString()); //输出:123.6

Console.WriteLine("---------------------------------------------");

Console.WriteLine(Math.Round(-123.45, 1).ToString()); //输出:-123.4

Console.WriteLine(Math.Round(-123.55, 1).ToString()); //输出:-123.6

Console.WriteLine("---------------------------------------------");

Console.ReadLine();

}

}

}

如果要实现我们所需要的四舍五入,需要使用使用四舍五入策略参数:MidpointRounding.AwayFromZero (当为5时,取远离0的数值)。

测试代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace MathRoundTest

{

class Program

{

static void Main(string\[\] args)

{

Console.WriteLine(Math.Round(1234.5,MidpointRounding.AwayFromZero).ToString()); //输出:1235

Console.WriteLine(Math.Round(1234.50, MidpointRounding.AwayFromZero).ToString()); //输出:1235

Console.WriteLine(Math.Round(1235.5, MidpointRounding.AwayFromZero).ToString()); //输出:1236

Console.WriteLine(Math.Round(1235.50, MidpointRounding.AwayFromZero).ToString()); //输出:1236

Console.WriteLine("---------------------------------------------");

Console.WriteLine(Math.Round(-1234.5, MidpointRounding.AwayFromZero).ToString()); //输出:-1235

Console.WriteLine(Math.Round(-1234.50, MidpointRounding.AwayFromZero).ToString()); //输出:-1235

Console.WriteLine(Math.Round(-1235.5, MidpointRounding.AwayFromZero).ToString()); //输出:-1236

Console.WriteLine(Math.Round(-1235.5, MidpointRounding.AwayFromZero).ToString()); //输出:-1236

Console.WriteLine("---------------------------------------------");

Console.WriteLine(Math.Round(123.45, 1, MidpointRounding.AwayFromZero).ToString()); //输出:123.5

Console.WriteLine(Math.Round(123.55, 1, MidpointRounding.AwayFromZero).ToString()); //输出:123.6

Console.WriteLine("---------------------------------------------");

Console.WriteLine(Math.Round(-123.45, 1, MidpointRounding.AwayFromZero).ToString()); //输出:-123.5

Console.WriteLine(Math.Round(-123.55, 1, MidpointRounding.AwayFromZero).ToString()); //输出:-123.6

Console.WriteLine("---------------------------------------------");

Console.ReadLine();

}

}

}

相关推荐
十年Java程序媛2 分钟前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
2603_9651481131 分钟前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
xixiaoyunya1 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
学逆向的2 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
小坏讲微服务2 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
我命由我123452 小时前
智能助手通用问答边界
人工智能·python·学习·ai·学习方法·ai编程·智能体
打工仔折腾 AI3 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战
MATLAB代码顾问4 小时前
Simulink PI 参数扫描与批量仿真完整 MATLAB 代码
开发语言·matlab
Want5954 小时前
Python跳动的爱心②
开发语言·python·数学建模
迪康Defender5 小时前
终端安全运维:浅谈迪康端点安全一体化管理系统工具箱实用能力
运维·安全·信息可视化·自动化·运维开发·学习方法·远程工作