# Math Class

**.NET Framework (current version)**

Note |
---|

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience. |

Provides constants and static methods for trigonometric, logarithmic, and other common mathematical functions.

To browse the .NET Framework source code for this type, see the Reference Source.

**Namespace:**System

**Assembly:**mscorlib (in mscorlib.dll)

Name | Description | |
---|---|---|

Abs(Decimal) | Returns the absolute value of a Decimal number. | |

Abs(Double) | Returns the absolute value of a double-precision floating-point number. | |

Abs(Int16) | Returns the absolute value of a 16-bit signed integer. | |

Abs(Int32) | Returns the absolute value of a 32-bit signed integer. | |

Abs(Int64) | Returns the absolute value of a 64-bit signed integer. | |

Abs(SByte) | Returns the absolute value of an 8-bit signed integer. | |

Abs(Single) | Returns the absolute value of a single-precision floating-point number. | |

Acos(Double) | Returns the angle whose cosine is the specified number. | |

Asin(Double) | Returns the angle whose sine is the specified number. | |

Atan(Double) | Returns the angle whose tangent is the specified number. | |

Atan2(Double, Double) | Returns the angle whose tangent is the quotient of two specified numbers. | |

BigMul(Int32, Int32) | Produces the full product of two 32-bit numbers. | |

Ceiling(Decimal) | Returns the smallest integral value that is greater than or equal to the specified decimal number. | |

Ceiling(Double) | Returns the smallest integral value that is greater than or equal to the specified double-precision floating-point number. | |

Cos(Double) | Returns the cosine of the specified angle. | |

Cosh(Double) | Returns the hyperbolic cosine of the specified angle. | |

DivRem(Int32, Int32, Int32%) | Calculates the quotient of two 32-bit signed integers and also returns the remainder in an output parameter. | |

DivRem(Int64, Int64, Int64%) | Calculates the quotient of two 64-bit signed integers and also returns the remainder in an output parameter. | |

Exp(Double) | Returns | |

Floor(Decimal) | Returns the largest integer less than or equal to the specified decimal number. | |

Floor(Double) | Returns the largest integer less than or equal to the specified double-precision floating-point number. | |

IEEERemainder(Double, Double) | Returns the remainder resulting from the division of a specified number by another specified number. | |

Log(Double) | Returns the natural (base | |

Log(Double, Double) | Returns the logarithm of a specified number in a specified base. | |

Log10(Double) | Returns the base 10 logarithm of a specified number. | |

Max(Byte, Byte) | Returns the larger of two 8-bit unsigned integers. | |

Max(Decimal, Decimal) | Returns the larger of two decimal numbers. | |

Max(Double, Double) | Returns the larger of two double-precision floating-point numbers. | |

Max(Int16, Int16) | Returns the larger of two 16-bit signed integers. | |

Max(Int32, Int32) | Returns the larger of two 32-bit signed integers. | |

Max(Int64, Int64) | Returns the larger of two 64-bit signed integers. | |

Max(SByte, SByte) | Returns the larger of two 8-bit signed integers. | |

Max(Single, Single) | Returns the larger of two single-precision floating-point numbers. | |

Max(UInt16, UInt16) | Returns the larger of two 16-bit unsigned integers. | |

Max(UInt32, UInt32) | Returns the larger of two 32-bit unsigned integers. | |

Max(UInt64, UInt64) | Returns the larger of two 64-bit unsigned integers. | |

Min(Byte, Byte) | Returns the smaller of two 8-bit unsigned integers. | |

Min(Decimal, Decimal) | Returns the smaller of two decimal numbers. | |

Min(Double, Double) | Returns the smaller of two double-precision floating-point numbers. | |

Min(Int16, Int16) | Returns the smaller of two 16-bit signed integers. | |

Min(Int32, Int32) | Returns the smaller of two 32-bit signed integers. | |

Min(Int64, Int64) | Returns the smaller of two 64-bit signed integers. | |

Min(SByte, SByte) | Returns the smaller of two 8-bit signed integers. | |

Min(Single, Single) | Returns the smaller of two single-precision floating-point numbers. | |

Min(UInt16, UInt16) | Returns the smaller of two 16-bit unsigned integers. | |

Min(UInt32, UInt32) | Returns the smaller of two 32-bit unsigned integers. | |

Min(UInt64, UInt64) | Returns the smaller of two 64-bit unsigned integers. | |

Pow(Double, Double) | Returns a specified number raised to the specified power. | |

Round(Decimal) | Rounds a decimal value to the nearest integral value. | |

Round(Decimal, Int32) | Rounds a decimal value to a specified number of fractional digits. | |

Round(Decimal, Int32, MidpointRounding) | Rounds a decimal value to a specified number of fractional digits. A parameter specifies how to round the value if it is midway between two numbers. | |

Round(Decimal, MidpointRounding) | Rounds a decimal value to the nearest integer. A parameter specifies how to round the value if it is midway between two numbers. | |

Round(Double) | Rounds a double-precision floating-point value to the nearest integral value. | |

Round(Double, Int32) | Rounds a double-precision floating-point value to a specified number of fractional digits. | |

Round(Double, Int32, MidpointRounding) | Rounds a double-precision floating-point value to a specified number of fractional digits. A parameter specifies how to round the value if it is midway between two numbers. | |

Round(Double, MidpointRounding) | Rounds a double-precision floating-point value to the nearest integer. A parameter specifies how to round the value if it is midway between two numbers. | |

Sign(Decimal) | Returns an integer that indicates the sign of a decimal number. | |

Sign(Double) | Returns an integer that indicates the sign of a double-precision floating-point number. | |

Sign(Int16) | Returns an integer that indicates the sign of a 16-bit signed integer. | |

Sign(Int32) | Returns an integer that indicates the sign of a 32-bit signed integer. | |

Sign(Int64) | Returns an integer that indicates the sign of a 64-bit signed integer. | |

Sign(SByte) | Returns an integer that indicates the sign of an 8-bit signed integer. | |

Sign(Single) | Returns an integer that indicates the sign of a single-precision floating-point number. | |

Sin(Double) | Returns the sine of the specified angle. | |

Sinh(Double) | Returns the hyperbolic sine of the specified angle. | |

Sqrt(Double) | Returns the square root of a specified number. | |

Tan(Double) | Returns the tangent of the specified angle. | |

Tanh(Double) | Returns the hyperbolic tangent of the specified angle. | |

Truncate(Decimal) | Calculates the integral part of a specified decimal number. | |

Truncate(Double) | Calculates the integral part of a specified double-precision floating-point number. |

Note |
---|

To view the .NET Framework source code for this type, see the Reference Source. You can browse through the source code online, download the reference for offline viewing, and step through the sources (including patches and updates) during debugging; see instructions. |

The following example uses several mathematical and trigonometric functions from the Math class to calculate the inner angles of a trapezoid.

/// <summary> /// The following class represents simple functionality of the trapezoid. /// </summary> using namespace System; 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() ); }

**Universal Windows Platform**

Available since 8

**.NET Framework**

Available since 1.1

**Portable Class Library**

Supported in: portable .NET platforms

**Silverlight**

Available since 2.0

**Windows Phone Silverlight**

Available since 7.0

**Windows Phone**

Available since 8.1

Any public static (
**Shared**
in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.