System.Math.Round 方法 (Double)

方法描述

将双精度浮点值舍入为最接近的整数值。

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

public static double Round(
	double a
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
a System-Double 要舍入的双精度浮点数。
返回值 System.Double 最接近 a 的整数。 如果 a 的小数部分正好处于两个整数中间,其中一个整数为偶数,另一个整数为奇数,则返回偶数。 请注意,此方法返回 Double,而不是整数类型。

提示和注释

此方法的行为遵循 IEEE 标准 754 的第 4 节。 这种舍入有时称为就近舍入或四舍六入五成双。 它可以将因单方向持续舍入中点值而导致的舍入误差降到最低。

若要控制 Round 方法使用的舍入类型,请调用 Math.Round(Double, MidpointRounding) 重载。

对调用者的说明

因为从表示十进制值为浮点数或执行浮点值上的算术运算导致的精度损失,所以在某些情况下 Round(Double) 方法可能不会出现圆点值接近的偶数整数。 在下面的示例中,由于浮点值 .1 没有有限的二进制表示形式,第一次用 11.5 值调用 Round(Double) 方法时得到的值为 11 而不是 12。

C#

VB

复制

using System;

public class Example

{

public static void Main()

{

double value = 11.1;

for (int ctr = 0; ctr <= 5; ctr++)

value = RoundValueAndAdd(value);

Console.WriteLine();

value = 11.5;

RoundValueAndAdd(value);

}

private static double RoundValueAndAdd(double value)

{

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

return value + .1;

}

}

// The example displays the following output:

// 11.1 --> 11

// 11.2 --> 11

// 11.3 --> 11

// 11.4 --> 11

// 11.5 --> 11

// 11.6 --> 12

//

// 11.5 --> 12

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

下面的示例使用 Round 来帮助计算给定梯形的内角。

/// 
	/// The following class represents simple functionality of the trapezoid.
	/// 
	class MathTrapezoidSample
	{
		private double m_longBase;
		private double m_shortBase;
		private double m_leftLeg;
		private double m_rightLeg;

		public MathTrapezoidSample(double longbase, double shortbase, double leftLeg, double rightLeg)
		{
			m_longBase = Math.Abs(longbase);
			m_shortBase = Math.Abs(shortbase);
			m_leftLeg = Math.Abs(leftLeg);
			m_rightLeg = Math.Abs(rightLeg);
		}

		private double GetRightSmallBase()
		{
			return (Math.Pow(m_rightLeg,2.0) - Math.Pow(m_leftLeg,2.0) + Math.Pow(m_longBase,2.0) + Math.Pow(m_shortBase,2.0) - 2* m_shortBase * m_longBase)/ (2*(m_longBase - m_shortBase));
		}

		public double GetHeight()
		{
			double x = GetRightSmallBase();
			return Math.Sqrt(Math.Pow(m_rightLeg,2.0) - Math.Pow(x,2.0));
		}

		public double GetSquare()
		{
			return GetHeight() * m_longBase / 2.0;
		}

		public double GetLeftBaseRadianAngle()
		{
			double sinX = GetHeight()/m_leftLeg;
			return Math.Round(Math.Asin(sinX),2);
		}

		public double GetRightBaseRadianAngle()
		{
			double x = GetRightSmallBase();
			double cosX = (Math.Pow(m_rightLeg,2.0) + Math.Pow(x,2.0) - Math.Pow(GetHeight(),2.0))/(2*x*m_rightLeg);
			return Math.Round(Math.Acos(cosX),2);
		}

		public double GetLeftBaseDegreeAngle()
		{
			double x = GetLeftBaseRadianAngle() * 180/ Math.PI;
			return Math.Round(x,2);
		}

		public double GetRightBaseDegreeAngle()
		{
			double x = GetRightBaseRadianAngle() * 180/ Math.PI;
			return Math.Round(x,2);
		}

		static void Main(string[] args)
		{
			MathTrapezoidSample trpz = new MathTrapezoidSample(20.0, 10.0, 8.0, 6.0);
			Console.WriteLine("The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0");
			double h = trpz.GetHeight();
			Console.WriteLine("Trapezoid height is: " + h.ToString());
			double dxR = trpz.GetLeftBaseRadianAngle();
			Console.WriteLine("Trapezoid left base angle is: " + dxR.ToString() + " Radians");
			double dyR = trpz.GetRightBaseRadianAngle();
			Console.WriteLine("Trapezoid right base angle is: " + dyR.ToString() + " Radians");
			double dxD = trpz.GetLeftBaseDegreeAngle();
			Console.WriteLine("Trapezoid left base angle is: " + dxD.ToString() + " Degrees");
			double dyD = trpz.GetRightBaseDegreeAngle();
			Console.WriteLine("Trapezoid left base angle is: " + dyD.ToString() + " Degrees");
		}
	}

异常

异常 异常描述

命名空间

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 系统要求。