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();

}

}

}

相关推荐
阿正的梦工坊37 分钟前
JavaScript 微任务与宏任务完全指南
开发语言·javascript·ecmascript
知行合一。。。1 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
青梅橘子皮1 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
笨笨饿1 小时前
#58_万能函数的构造方法:ReLU函数
数据结构·人工智能·stm32·单片机·硬件工程·学习方法
浅时光_c2 小时前
3 shell脚本编程
linux·开发语言·bash
Evand J2 小时前
【三维轨迹目标定位,CKF+RTS,MATLAB程序】基于CKF与RTS平滑的三维非线性目标跟踪(距离+方位角+俯仰角)
开发语言·matlab·目标跟踪
今天又在写代码3 小时前
java-v2
java·开发语言
competes3 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
Ulyanov4 小时前
用Pyglet打造AI数字猎人:从零开始的Python游戏开发与强化学习实践
开发语言·人工智能·python
独自归家的兔4 小时前
OCPP 1.6 协议详解:StatusNotification 状态通知指令
开发语言·数据库·spring boot·物联网