Math Class (System)

Switch View :
ScriptFree
.NET Framework Class Library
Math Class

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

Inheritance Hierarchy

System.Object
  System.Math

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
Syntax

Visual Basic
Public NotInheritable Class Math
C#
public static class Math
Visual C++
public ref class Math abstract sealed
F#
[<AbstractClass>]
[<Sealed>]
type Math =  class end

The Math type exposes the following members.

Methods

  Name Description
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Abs(Decimal) Returns the absolute value of a Decimal number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Abs(Double) Returns the absolute value of a double-precision floating-point number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Abs(Int16) Returns the absolute value of a 16-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Abs(Int32) Returns the absolute value of a 32-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Abs(Int64) Returns the absolute value of a 64-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Abs(SByte) Returns the absolute value of an 8-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Abs(Single) Returns the absolute value of a single-precision floating-point number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Acos Returns the angle whose cosine is the specified number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Asin Returns the angle whose sine is the specified number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Atan Returns the angle whose tangent is the specified number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Atan2 Returns the angle whose tangent is the quotient of two specified numbers.
Public method Static member BigMul Produces the full product of two 32-bit numbers.
Public method Static member Ceiling(Decimal) Returns the smallest integral value that is greater than or equal to the specified decimal number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Ceiling(Double) Returns the smallest integral value that is greater than or equal to the specified double-precision floating-point number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Cos Returns the cosine of the specified angle.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Cosh Returns the hyperbolic cosine of the specified angle.
Public method Static member DivRem(Int32, Int32, Int32) Calculates the quotient of two 32-bit signed integers and also returns the remainder in an output parameter.
Public method Static member DivRem(Int64, Int64, Int64) Calculates the quotient of two 64-bit signed integers and also returns the remainder in an output parameter.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Exp Returns e raised to the specified power.
Public method Static member Floor(Decimal) Returns the largest integer less than or equal to the specified decimal number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Floor(Double) Returns the largest integer less than or equal to the specified double-precision floating-point number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library IEEERemainder Returns the remainder resulting from the division of a specified number by another specified number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Log(Double) Returns the natural (base e) logarithm of a specified number.
Public method Static member Supported by Portable Class Library Log(Double, Double) Returns the logarithm of a specified number in a specified base.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Log10 Returns the base 10 logarithm of a specified number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(Byte, Byte) Returns the larger of two 8-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(Decimal, Decimal) Returns the larger of two decimal numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(Double, Double) Returns the larger of two double-precision floating-point numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(Int16, Int16) Returns the larger of two 16-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(Int32, Int32) Returns the larger of two 32-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(Int64, Int64) Returns the larger of two 64-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(SByte, SByte) Returns the larger of two 8-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(Single, Single) Returns the larger of two single-precision floating-point numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(UInt16, UInt16) Returns the larger of two 16-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(UInt32, UInt32) Returns the larger of two 32-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Max(UInt64, UInt64) Returns the larger of two 64-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(Byte, Byte) Returns the smaller of two 8-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(Decimal, Decimal) Returns the smaller of two decimal numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(Double, Double) Returns the smaller of two double-precision floating-point numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(Int16, Int16) Returns the smaller of two 16-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(Int32, Int32) Returns the smaller of two 32-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(Int64, Int64) Returns the smaller of two 64-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(SByte, SByte) Returns the smaller of two 8-bit signed integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(Single, Single) Returns the smaller of two single-precision floating-point numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(UInt16, UInt16) Returns the smaller of two 16-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(UInt32, UInt32) Returns the smaller of two 32-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Min(UInt64, UInt64) Returns the smaller of two 64-bit unsigned integers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Pow Returns a specified number raised to the specified power.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Round(Decimal) Rounds a decimal value to the nearest integral value.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Round(Double) Rounds a double-precision floating-point value to the nearest integral value.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Round(Decimal, Int32) Rounds a decimal value to a specified number of fractional digits.
Public method Static member 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 other numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Round(Double, Int32) Rounds a double-precision floating-point value to a specified number of fractional digits.
Public method Static member 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 other numbers.
Public method Static member 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 other numbers.
Public method Static member Round(Double, Int32, MidpointRounding) Rounds a double-precision floating-point value to the specified number of fractional digits. A parameter specifies how to round the value if it is midway between two other numbers.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sign(Decimal) Returns a value indicating the sign of a decimal number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sign(Double) Returns a value indicating the sign of a double-precision floating-point number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sign(Int16) Returns a value indicating the sign of a 16-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sign(Int32) Returns a value indicating the sign of a 32-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sign(Int64) Returns a value indicating the sign of a 64-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sign(SByte) Returns a value indicating the sign of an 8-bit signed integer.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sign(Single) Returns a value indicating the sign of a single-precision floating-point number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sin Returns the sine of the specified angle.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sinh Returns the hyperbolic sine of the specified angle.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Sqrt Returns the square root of a specified number.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Tan Returns the tangent of the specified angle.
Public method Static member Supported by the XNA Framework Supported by Portable Class Library Tanh Returns the hyperbolic tangent of the specified angle.
Public method Static member Truncate(Decimal) Calculates the integral part of a specified decimal number.
Public method Static member Truncate(Double) Calculates the integral part of a specified double-precision floating-point number.
Top
Fields

  Name Description
Public field Static member Supported by the XNA Framework Supported by Portable Class Library E Represents the natural logarithmic base, specified by the constant, e.
Public field Static member Supported by the XNA Framework Supported by Portable Class Library PI Represents the ratio of the circumference of a circle to its diameter, specified by the constant, π.
Top
Examples

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

Visual Basic

'The following class represents simple functionality of the trapezoid.
Class MathTrapezoidSample

    Private m_longBase As Double
    Private m_shortBase As Double
    Private m_leftLeg As Double
    Private m_rightLeg As Double

    Public Sub New(ByVal longbase As Double, ByVal shortbase As Double, ByVal leftLeg As Double, ByVal rightLeg As Double)
        m_longBase = Math.Abs(longbase)
        m_shortBase = Math.Abs(shortbase)
        m_leftLeg = Math.Abs(leftLeg)
        m_rightLeg = Math.Abs(rightLeg)
    End Sub

    Private Function GetRightSmallBase() As Double
        GetRightSmallBase = (Math.Pow(m_rightLeg, 2) - Math.Pow(m_leftLeg, 2) + Math.Pow(m_longBase, 2) + Math.Pow(m_shortBase, 2) - 2 * m_shortBase * m_longBase) / (2 * (m_longBase - m_shortBase))
    End Function

    Public Function GetHeight() As Double
        Dim x As Double = GetRightSmallBase()
        GetHeight = Math.Sqrt(Math.Pow(m_rightLeg, 2) - Math.Pow(x, 2))
    End Function

    Public Function GetSquare() As Double
        GetSquare = GetHeight() * m_longBase / 2
    End Function

    Public Function GetLeftBaseRadianAngle() As Double
        Dim sinX As Double = GetHeight() / m_leftLeg
        GetLeftBaseRadianAngle = Math.Round(Math.Asin(sinX), 2)
    End Function

    Public Function GetRightBaseRadianAngle() As Double
        Dim x As Double = GetRightSmallBase()
        Dim cosX As Double = (Math.Pow(m_rightLeg, 2) + Math.Pow(x, 2) - Math.Pow(GetHeight(), 2)) / (2 * x * m_rightLeg)
        GetRightBaseRadianAngle = Math.Round(Math.Acos(cosX), 2)
    End Function

    Public Function GetLeftBaseDegreeAngle() As Double
        Dim x As Double = GetLeftBaseRadianAngle() * 180 / Math.PI
        GetLeftBaseDegreeAngle = Math.Round(x, 2)
    End Function

    Public Function GetRightBaseDegreeAngle() As Double
        Dim x As Double = GetRightBaseRadianAngle() * 180 / Math.PI
        GetRightBaseDegreeAngle = Math.Round(x, 2)
    End Function

    Public Shared Sub Main()
        Dim trpz As MathTrapezoidSample = New MathTrapezoidSample(20, 10, 8, 6)
        Console.WriteLine("The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0")
        Dim h As Double = trpz.GetHeight()
        Console.WriteLine("Trapezoid height is: " + h.ToString())
        Dim dxR As Double = trpz.GetLeftBaseRadianAngle()
        Console.WriteLine("Trapezoid left base angle is: " + dxR.ToString() + " Radians")
        Dim dyR As Double = trpz.GetRightBaseRadianAngle()
        Console.WriteLine("Trapezoid right base angle is: " + dyR.ToString() + " Radians")
        Dim dxD As Double = trpz.GetLeftBaseDegreeAngle()
        Console.WriteLine("Trapezoid left base angle is: " + dxD.ToString() + " Degrees")
        Dim dyD As Double = trpz.GetRightBaseDegreeAngle()
        Console.WriteLine("Trapezoid left base angle is: " + dyD.ToString() + " Degrees")
    End Sub

End Class



C#

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


Visual C++

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



Version Information

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library
Platforms

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.
Thread Safety

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

Reference

Community Content

R Petrusha - MSFT
Missing System.Math class methods?

The System.Math.Log() method seems to be missing from my references. Even walking the class view I can't seem to find it. I tried adding "system" as a resource and mscorelib is already added (I have the Math class).

What am I missing?

Thanks...

The Math.Log Method

Public methods cannot be missing unless they're not implemented in a particular version of the .NET Framework, and both overloads of Math.Log are present in all versions of the .NET Framework. What language are you using, what does your code that calls the method look like, and what is the compiler error that you get when you try compiling? If you're coding in C# or C++, have you imported the System namespace?

--Ron Petrusha
Common Language Runtime User Education
Microsoft Corporation


Maira Wenzel -- MSFT
System.Math

Visual C# Exprees 2008 not have class System.math? What I cant doing?

System.Math

The System.Math class is included in mscorlib.dll, which is automatically referenced by every compiler that builds applications that target the .NET Framework. Are you importing the System namespace with the following C# statement?

using System;


--Ron Petrusha
Common Language Runtime Developer Content
Microsoft Corporation