System.Math.Round 方法 (Double, Int32)

方法描述

将双精度浮点值按指定的小数位数舍入。

语法定义(C# System.Math.Round 方法 (Double, Int32) 的用法)

public static double Round(
	double value,
	int digits
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
value System-Double 要舍入的双精度浮点数。
digits System-Int32 返回值中的小数数字。
返回值 System.Double 最接近 value 的 digits 位小数的数字。

提示和注释

digits 参数指定返回值中的小数位数以及范围 0 和 15。 如果 digits 等于零,则返回整数。

可返回的整数和小数最大总位数为 15。 如果舍入的值包含 15 个以上的数字,则返回 15 个最重要的数字。 如果舍入的值包含的位数小于或等于 15,则返回整数位数和 digits 参数指定的小数位数。

如果 value 中 digits 小数位置右侧的第一位数字的值为 5,则 digits 位置中的数字向上舍入(如果为奇数)或不变(如果为偶数)。 如果 value 的精度小于 digits,则返回 value 而不做更改。

此方法的行为遵循 IEEE 标准 754 的第 4 节。 这种舍入有时称为就近舍入或四舍六入五成双。 它可以将因单方向持续舍入中点值而导致的舍入误差降到最低。 若要控制 Round(Double, Int32) 方法使用的舍入类型,请调用 Math.Round(Double, Int32, MidpointRounding) 重载。

对调用者的说明

由于用十进制数表示浮点数或对浮点数进行算术运算可能导致的误差,在某些情况下,Round(Double, Int32) 方法可能不会对中点值四舍五入到在 digits 位置中最近的偶数值。 如下面的示例所示,其中 2.135 将舍入为 2.13 而不是 2.14。 这是因为在内部该方法将 value 乘以10 *digits,并且乘法运算在这种情况下会损失精度。

C#

VB

复制

using System;

public class Example

{

public static void Main()

{

double[] values = { 2.125, 2.135, 2.145, 3.125, 3.135, 3.145 };

foreach (double value in values)

Console.WriteLine("{0} --> {1}", value, Math.Round(value, 2));

}

}

// The example displays the following output:

// 2.125 --> 2.12

// 2.135 --> 2.13

// 2.145 --> 2.14

// 3.125 --> 3.12

// 3.135 --> 3.14

// 3.145 --> 3.14

System.Math.Round 方法 (Double, Int32)例子

下面的示例演示就近舍入。

Math.Round(3.44, 1); //Returns 3.4.
Math.Round(3.45, 1); //Returns 3.4.
Math.Round(3.46, 1); //Returns 3.5.

Math.Round(4.34, 1); // Returns 4.3
Math.Round(4.35, 1); // Returns 4.4
Math.Round(4.36, 1); // Returns 4.4

异常

异常 异常描述
ArgumentOutOfRangeException digits 小于 0 或大于 15。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。