Math::Round Method (Double)
Rounds a double-precision floating-point value to the nearest integral value.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- a
- Type: System::Double
A double-precision floating-point number to be rounded.
Return Value
Type: System::DoubleThe integer nearest a. If the fractional component of a is halfway between two integers, one of which is even and the other odd, then the even number is returned. Note that this method returns a Double instead of an integral type.
The behavior of this method follows IEEE Standard 754, section 4. This kind of rounding is sometimes called rounding to nearest, or banker's rounding. It minimizes rounding errors that result from consistently rounding a midpoint value in a single direction.
To control the type of rounding used by the Round method, call the Math::Round(Double, MidpointRounding) overload.
If the value of a is Double::NaN, the method returns Double::NaN. If the value of a is Double::PositiveInfinity or Double::NegativeInfinity, the method returns Double::PositiveInfinity or Double::NegativeInfinity, respectively.
Notes to CallersBecause of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values, in some cases the Round(Double) method may not appear to round midpoint values to the nearest even integer. In the following example, because the floating-point value .1 has no finite binary representation, the first call to the Round(Double) method with a value of 11.5 returns 11 instead of 12.
The following example demonstrates rounding to the nearest integer value.
The following example uses Round to assist in the computation of the inner angles of a given trapezoid.
/// <summary> /// The following class represents simple functionality of the trapezoid. /// </summary> public ref class MathTrapezoidSample { private: double m_longBase; double m_shortBase; double m_leftLeg; 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 ) ); } double GetSquare() { return GetHeight() * m_longBase / 2.0; } double GetLeftBaseRadianAngle() { double sinX = GetHeight() / m_leftLeg; return Math::Round( Math::Asin( sinX ), 2 ); } 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 ); } double GetLeftBaseDegreeAngle() { double x = GetLeftBaseRadianAngle() * 180 / Math::PI; return Math::Round( x, 2 ); } double GetRightBaseDegreeAngle() { double x = GetRightBaseRadianAngle() * 180 / Math::PI; return Math::Round( x, 2 ); } }; int main() { MathTrapezoidSample^ trpz = gcnew 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: {0}", h.ToString() ); double dxR = trpz->GetLeftBaseRadianAngle(); Console::WriteLine( "Trapezoid left base angle is: {0} Radians", dxR.ToString() ); double dyR = trpz->GetRightBaseRadianAngle(); Console::WriteLine( "Trapezoid right base angle is: {0} Radians", dyR.ToString() ); double dxD = trpz->GetLeftBaseDegreeAngle(); Console::WriteLine( "Trapezoid left base angle is: {0} Degrees", dxD.ToString() ); double dyD = trpz->GetRightBaseDegreeAngle(); Console::WriteLine( "Trapezoid left base angle is: {0} Degrees", dyD.ToString() ); }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.