Math 類別

定義

提供三角函數、對數函數和其他一般數學函數的常數和靜態方法。

public ref class Math abstract sealed
public ref class Math sealed
public static class Math
public sealed class Math
type Math = class
Public Class Math
Public NotInheritable Class Math
繼承
Math

範例

下列範例會使用 類別中的 Math 數個數學和三角函數來計算陷阱的內部角度。

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

namespace MathClassCS
{
    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");
        }
    }
}
open System

/// The following class represents simple functionality of the trapezoid.
type MathTrapezoidSample(longbase, shortbase, leftLeg, rightLeg) =
    member _.GetRightSmallBase() =
        (Math.Pow(rightLeg, 2.) - Math.Pow(leftLeg, 2.) + Math.Pow(longbase, 2.) + Math.Pow(shortbase, 2.) - 2. * shortbase * longbase) / (2. * (longbase - shortbase))

    member this.GetHeight() =
        let x = this.GetRightSmallBase()
        Math.Sqrt(Math.Pow(rightLeg, 2.) - Math.Pow(x, 2.))

    member this.GetSquare() =
        this.GetHeight() * longbase / 2.

    member this.GetLeftBaseRadianAngle() =
        let sinX = this.GetHeight() / leftLeg
        Math.Round(Math.Asin sinX,2)

    member this.GetRightBaseRadianAngle() =
        let x = this.GetRightSmallBase()
        let cosX = (Math.Pow(rightLeg, 2.) + Math.Pow(x, 2.) - Math.Pow(this.GetHeight(), 2.))/(2. * x * rightLeg)
        Math.Round(Math.Acos cosX, 2)

    member this.GetLeftBaseDegreeAngle() =
        let x = this.GetLeftBaseRadianAngle() * 180. / Math.PI
        Math.Round(x, 2)

    member this.GetRightBaseDegreeAngle() =
        let x = this.GetRightBaseRadianAngle() * 180. / Math.PI
        Math.Round(x, 2)

let trpz = MathTrapezoidSample(20., 10., 8., 6.)
printfn "The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0"
let h = trpz.GetHeight()
printfn $"Trapezoid height is: {h}"
let dxR = trpz.GetLeftBaseRadianAngle()
printfn $"Trapezoid left base angle is: {dxR} Radians"
let dyR = trpz.GetRightBaseRadianAngle()
printfn $"Trapezoid right base angle is: {dyR} Radians"
let dxD = trpz.GetLeftBaseDegreeAngle()
printfn $"Trapezoid left base angle is: {dxD} Degrees"
let dyD = trpz.GetRightBaseDegreeAngle()
printfn $"Trapezoid left base angle is: {dyD} Degrees"
'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

欄位

E

代表自然對數底數,由常數 e 指定。

PI

代表圓周率,由常數 π 指定。

Tau

代表單一回合中的弧度數目,由常數 τ 指定。

方法

Abs(Decimal)

傳回 Decimal 數字的絕對值。

Abs(Double)

傳回雙精確度浮點數的絕對值。

Abs(Int16)

傳回 16 位元帶正負號整數的絕對值。

Abs(Int32)

傳回 32 位元帶正負號整數的絕對值。

Abs(Int64)

傳回 64 位元帶正負號整數的絕對值。

Abs(IntPtr)

傳回原生帶正負號整數的絕對值。

Abs(SByte)

傳回 8 位元帶正負號整數的絕對值。

Abs(Single)

傳回單精確度浮點數的絕對值。

Acos(Double)

傳回餘弦函數 (Cosine) 是指定數字的角。

Acosh(Double)

傳回雙曲線餘弦函數是指定數字的角。

Asin(Double)

傳回正弦函數 (Sine) 是指定數字的角。

Asinh(Double)

傳回雙曲線正弦函數是指定數字的角。

Atan(Double)

傳回正切函數 (Tangent) 是指定數字的角。

Atan2(Double, Double)

傳回正切函數是兩個指定數字之商數的角。

Atanh(Double)

傳回雙曲線正弦函數是指定數字的角。

BigMul(Int32, Int32)

產生兩個 32 位元數字的完整產品。

BigMul(Int64, Int64, Int64)

產生 2 個 64 位元數字的完整乘積。

BigMul(UInt64, UInt64, UInt64)

產生兩個不帶正負號 64 位元數字的完整乘積。

BitDecrement(Double)

傳回小於指定值的最大值。

BitIncrement(Double)

傳回小於指定值的最小值。

Cbrt(Double)

傳回指定數字的立方根。

Ceiling(Decimal)

傳回大於或等於指定之十進位數字的最小整數值。

Ceiling(Double)

傳回大於或等於指定之雙精確度浮點數的最小整數值。

Clamp(Byte, Byte, Byte)

傳回限制為 minmax 內含範圍的 value

Clamp(Decimal, Decimal, Decimal)

傳回限制為 minmax 內含範圍的 value

Clamp(Double, Double, Double)

傳回限制為 minmax 內含範圍的 value

Clamp(Int16, Int16, Int16)

傳回限制為 minmax 內含範圍的 value

Clamp(Int32, Int32, Int32)

傳回限制為 minmax 內含範圍的 value

Clamp(Int64, Int64, Int64)

傳回限制為 minmax 內含範圍的 value

Clamp(IntPtr, IntPtr, IntPtr)

傳回限制為 minmax 內含範圍的 value

Clamp(SByte, SByte, SByte)

傳回限制為 minmax 內含範圍的 value

Clamp(Single, Single, Single)

傳回限制為 minmax 內含範圍的 value

Clamp(UInt16, UInt16, UInt16)

傳回限制為 minmax 內含範圍的 value

Clamp(UInt32, UInt32, UInt32)

傳回限制為 minmax 內含範圍的 value

Clamp(UInt64, UInt64, UInt64)

傳回限制為 minmax 內含範圍的 value

Clamp(UIntPtr, UIntPtr, UIntPtr)

傳回限制為 minmax 內含範圍的 value

CopySign(Double, Double)

傳回量級為 x 且符號為 y 的值。

Cos(Double)

傳回指定角的餘弦函數。

Cosh(Double)

傳回指定角的雙曲線餘弦函數。

DivRem(Byte, Byte)

產生兩個不帶正負號 8 位數位的商數和餘數。

DivRem(Int16, Int16)

產生兩個帶正負號 16 位數位的商數和餘數。

DivRem(Int32, Int32)

產生兩個帶正負號 32 位數位的商數和餘數。

DivRem(Int32, Int32, Int32)

計算兩個 32 位元帶正負號的整數商數,並傳回餘數做為輸出參數。

DivRem(Int64, Int64)

產生兩個帶正負號 64 位數位的商數和其餘部分。

DivRem(Int64, Int64, Int64)

計算兩個 64 位元帶正負號的整數商數,並傳回餘數做為輸出參數。

DivRem(IntPtr, IntPtr)

產生兩個帶正負號原生大小數位的商數和其餘部分。

DivRem(SByte, SByte)

產生兩個帶正負號 8 位數位的商數和餘數。

DivRem(UInt16, UInt16)

產生兩個不帶正負號 16 位數位的商數和餘數。

DivRem(UInt32, UInt32)

產生兩個無符號 32 位數位的商數和餘數。

DivRem(UInt64, UInt64)

產生商數和兩個不帶正負號的 64 位數位的餘數。

DivRem(UIntPtr, UIntPtr)

產生兩個不帶正負號原生大小數位的商數和其餘部分。

Exp(Double)

傳回具有指定乘冪數的 e

Floor(Decimal)

傳回小於或等於指定十進位數字的最大整數值。

Floor(Double)

傳回小於或等於指定雙精確度浮點數的最大整數值。

FusedMultiplyAdd(Double, Double, Double)

傳回 (x * y) + z,四捨五入為一個三元運算。

IEEERemainder(Double, Double)

傳回指定數字除以另一個指定數字所得的餘數。

ILogB(Double)

傳回以 2 為底數時指定數字的整數對數。

Log(Double)

傳回指定數字的自然 (底數為 e) 對數。

Log(Double, Double)

傳回指定底數中指定數字的對數。

Log10(Double)

傳回指定數字的以 10 為底數的對數。

Log2(Double)

傳回以 2 為底數時指定數字的對數。

Max(Byte, Byte)

傳回兩個 8 位元不帶正負號整數中較大的一個。

Max(Decimal, Decimal)

傳回兩個十進位數字中較大的一個。

Max(Double, Double)

傳回兩個雙精確度浮點數中較大的一個。

Max(Int16, Int16)

傳回兩個 16 位元帶正負號整數中較大的一個。

Max(Int32, Int32)

傳回兩個 32 位元帶正負號整數中較大的一個。

Max(Int64, Int64)

傳回兩個 64 位元帶正負號整數中較大的一個。

Max(IntPtr, IntPtr)

傳回兩個原生帶正負號整數的較大值。

Max(SByte, SByte)

傳回兩個 8 位元帶正負號整數中較大的一個。

Max(Single, Single)

傳回兩個單精確度浮點數中較大的一個。

Max(UInt16, UInt16)

傳回兩個 16 位元不帶正負號整數中較大的一個。

Max(UInt32, UInt32)

傳回兩個 32 位元不帶正負號整數中較大的一個。

Max(UInt64, UInt64)

傳回兩個 64 位元不帶正負號整數中較大的一個。

Max(UIntPtr, UIntPtr)

傳回兩個原生不帶正負號整數的較大值。

MaxMagnitude(Double, Double)

傳回兩個雙精確度浮點數中較大的那個量級。

Min(Byte, Byte)

傳回兩個 8 位元不帶正負號整數中較小的一個。

Min(Decimal, Decimal)

傳回兩個十進位數字中較小的一個。

Min(Double, Double)

傳回兩個雙精確度浮點數中較小的一個。

Min(Int16, Int16)

傳回兩個 16 位元帶正負號整數中較小的一個。

Min(Int32, Int32)

傳回兩個 32 位元帶正負號整數中較小的一個。

Min(Int64, Int64)

傳回兩個 64 位元帶正負號整數中較小的一個。

Min(IntPtr, IntPtr)

傳回兩個原生帶正負號整數的較小值。

Min(SByte, SByte)

傳回兩個 8 位元帶正負號整數中較小的一個。

Min(Single, Single)

傳回兩個單精確度浮點數中較小的一個。

Min(UInt16, UInt16)

傳回兩個 16 位元不帶正負號整數中較小的一個。

Min(UInt32, UInt32)

傳回兩個 32 位元不帶正負號整數中較小的一個。

Min(UInt64, UInt64)

傳回兩個 64 位元不帶正負號整數中較小的一個。

Min(UIntPtr, UIntPtr)

傳回兩個原生不帶正負號整數的較小。

MinMagnitude(Double, Double)

傳回兩個雙精確度浮點數中較小的那個量級。

Pow(Double, Double)

傳回具有指定乘冪數的指定數字。

ReciprocalEstimate(Double)

傳回指定數位的相互估計值。

ReciprocalSqrtEstimate(Double)

傳回指定數位之相互平方根的估計值。

Round(Decimal)

將十進位值四捨五入到最接近的整數值,並將中間點值四捨五入到最接近的偶數。

Round(Decimal, Int32)

將十進位值四捨五入到小數數字的指定數字,並將中間點值四捨五入到最接近的偶數。

Round(Decimal, Int32, MidpointRounding)

使用指定的四捨五入慣例,將十進位值四捨五入為指定的小數位數。

Round(Decimal, MidpointRounding)

使用指定的四捨五入慣例,四捨五入整數的十進位值。

Round(Double)

將雙精確度浮點數值四捨五入到最接近的整數值,並將中間點值四捨五入到最接近的偶數。

Round(Double, Int32)

將雙精確度浮點數值四捨五入到小數數字的指定數字,並將中間點值四捨五入到最接近的偶數。

Round(Double, Int32, MidpointRounding)

使用指定的四捨五入慣例,將雙精確度浮點值四捨五入至指定的小數位數。

Round(Double, MidpointRounding)

使用指定的四捨五入慣例,將雙精確度浮點值四捨五入為整數。

ScaleB(Double, Int32)

傳回有效率計算的 x * 2^n。

Sign(Decimal)

傳回整數,這個整數表示十進位數字的正負號。

Sign(Double)

傳回整數,表示雙精確度浮點數的正負號。

Sign(Int16)

傳回整數,這個整數表示 16 位元帶正負號整數的正負號。

Sign(Int32)

傳回整數,這個整數表示 32 位元帶正負號整數的正負號。

Sign(Int64)

傳回整數,表示 64 位元帶正負號整數的正負號。

Sign(IntPtr)

傳回整數,指出原生大小帶正負號整數的正負號。

Sign(SByte)

傳回整數,表示 8 位元帶正負號整數的正負號。

Sign(Single)

傳回整數,表示單精確度浮點數的正負號。

Sin(Double)

傳回指定角的正弦函數。

SinCos(Double)

傳回指定角度的正弦和余弦。

Sinh(Double)

傳回指定角的雙曲線正弦函數。

Sqrt(Double)

傳回指定數字的平方根。

Tan(Double)

傳回指定角的正切函數。

Tanh(Double)

傳回指定角的雙曲線正切函數。

Truncate(Decimal)

計算指定的十進位數字的整數部分。

Truncate(Double)

計算指定的雙精確度浮點數的整數部分。

適用於