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

}

}

}

相关推荐
LDR00613 小时前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 小时前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园13 小时前
C++20 Modules 模块详解
java·开发语言·spring
swordbob13 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享14 小时前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.14 小时前
C语言--day30
c语言·开发语言
何以解忧,唯有..14 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽14 小时前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下14 小时前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗11114 小时前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言