Math 类

为三角函数、对数函数和其他通用数学函数提供常数和静态方法。

**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public NotInheritable Class Math
用法
可对静态类的成员直接进行访问,无需类的实例。
public static class Math
public ref class Math abstract sealed
public final class Math
public final class Math

示例

下面的代码示例使用 Math 类中的几个数学函数和三角函数来计算一个梯形的几个内角。

'The following class represents simple functionallity 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 trpezoid'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
/// <summary>
/// The following class represents simple functionallity 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 trpezoid'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");
    }
}
/// <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 trpezoid'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() );
}
/// <summary>
/// The following class represents simple functionallity of the Trapezoid
/// </summary>
class MathTrapezoidSample
{
    private double mLongBase;
    private double mShortBase;
    private double mLeftLeg;
    private double mRightLeg;
    public MathTrapezoidSample(double longBase, double shortBase, 
        double leftLeg, double rightLeg)
    {
        mLongBase = System.Math.Abs(longBase);
        mShortBase = System.Math.Abs(shortBase);
        mLeftLeg = System.Math.Abs(leftLeg);
        mRightLeg = System.Math.Abs(rightLeg);
    } //MathTrapezoidSample

    private double GetRightSmallBase()
    {
        return (System.Math.Pow(mRightLeg, 2.0) 
            - System.Math.Pow(mLeftLeg, 2.0) 
            + System.Math.Pow(mLongBase, 2.0) 
            + System.Math.Pow(mShortBase, 2.0) 
            - 2 * mShortBase * mLongBase) / (2 * (mLongBase - mShortBase));
    } //GetRightSmallBase

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

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

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

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

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

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

    public static void main(String[] args)
    {
        MathTrapezoidSample trpz = 
            new MathTrapezoidSample(20.0, 10.0, 8.0, 6.0);
        Console.WriteLine("The trpezoid'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: " 
            + System.Convert.ToString(h));
        double dxR = trpz.GetLeftBaseRadianAngle();
        Console.WriteLine("Trapezoid left base angle is: " 
            + System.Convert.ToString(dxR) + " Radians");
        double dyR = trpz.GetRightBaseRadianAngle();
        Console.WriteLine("Trapezoid right base angle is: " 
            + System.Convert.ToString(dyR) + " Radians");
        double dxD = trpz.GetLeftBaseDegreeAngle();
        Console.WriteLine("Trapezoid left base angle is: " 
            + System.Convert.ToString(dxD) + " Degrees");
        double dyD = trpz.GetRightBaseDegreeAngle();
        Console.WriteLine("Trapezoid left base angle is: " 
            + System.Convert.ToString(dyD) + " Degrees");
    } //main
} //MathTrapezoidSample

继承层次结构

System.Object
  System.Math

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Math 成员
System 命名空间