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 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 right 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 right 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 right base angle is: " + dyD.ToString() + " Degrees")
    End Sub
End Class

欄位

名稱 Description
E

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

PI

代表圓周長與直徑的比值,由常數π表示。

Tau

表示一回合內弧度數,由常數 τ 表示。

方法

名稱 Description
Abs(Decimal)

回傳一個 Decimal 數字的絕對值。

Abs(Double)

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

Abs(Int16)

回傳一個 16 位元有符號整數的絕對值。

Abs(Int32)

回傳一個 32 位元有符號整數的絕對值。

Abs(Int64)

回傳一個 64 位元有符號整數的絕對值。

Abs(IntPtr)

回傳一個本地有符號整數的絕對值。

Abs(SByte)

回傳一個 8 位元有符號整數的絕對值。

Abs(Single)

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

Acos(Double)

返回餘弦為指定數值的角度。

Acosh(Double)

回傳雙曲餘弦為指定數值的角度。

Asin(Double)

回傳正弦值為指定數值的角度。

Asinh(Double)

回傳雙曲正弦值為指定數值的角度。

Atan(Double)

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

Atan2(Double, Double)

返回切線為兩個指定數的商角。

Atanh(Double)

回傳雙曲切線為指定數值的角度。

BigMul(Int32, Int32)

產生兩個 32 位元數字的全積。

BigMul(Int64, Int64, Int64)

產生兩個 64 位元數字的全積。

BigMul(Int64, Int64)

產生兩個 64 位元數字的全積。

BigMul(UInt32, UInt32)

產生兩個無符號 32 位元數字的完整乘積。

BigMul(UInt64, UInt64, UInt64)

產生兩個無符號 64 位元數字的完整乘積。

BigMul(UInt64, UInt64)

產生兩個無符號 64 位元數字的完整乘積。

BitDecrement(Double)

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

BitIncrement(Double)

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

Cbrt(Double)

回傳指定數字的立方根。

Ceiling(Decimal)

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

Ceiling(Double)

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

Clamp(Byte, Byte, Byte)

value報酬被鎖定在包含範圍 和 minmax

Clamp(Decimal, Decimal, Decimal)

value報酬被鎖定在包含範圍 和 minmax

Clamp(Double, Double, Double)

value報酬被鎖定在包含範圍 和 minmax

Clamp(Int16, Int16, Int16)

value報酬被鎖定在包含範圍 和 minmax

Clamp(Int32, Int32, Int32)

value報酬被鎖定在包含範圍 和 minmax

Clamp(Int64, Int64, Int64)

value報酬被鎖定在包含範圍 和 minmax

Clamp(IntPtr, IntPtr, IntPtr)

value報酬被鎖定在包含範圍 和 minmax

Clamp(SByte, SByte, SByte)

value報酬被鎖定在包含範圍 和 minmax

Clamp(Single, Single, Single)

value報酬被鎖定在包含範圍 和 minmax

Clamp(UInt16, UInt16, UInt16)

value報酬被鎖定在包含範圍 和 minmax

Clamp(UInt32, UInt32, UInt32)

value報酬被鎖定在包含範圍 和 minmax

Clamp(UInt64, UInt64, UInt64)

value報酬被鎖定在包含範圍 和 minmax

Clamp(UIntPtr, UIntPtr, UIntPtr)

value報酬被鎖定在包含範圍 和 minmax

CopySign(Double, Double)

回傳大小為 、 x 符號為 y的值。

Cos(Double)

傳回指定角度的餘弦。

Cosh(Double)

返回指定角度的雙曲餘弦。

DivRem(Byte, Byte)

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

DivRem(Int16, Int16)

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

DivRem(Int32, Int32, Int32)

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

DivRem(Int32, Int32)

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

DivRem(Int64, Int64, Int64)

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

DivRem(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, Double)

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

Log(Double)

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

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, Int32, MidpointRounding)

利用指定的四捨五入慣例,將小數點數四捨五入至指定數量的分數。

Round(Decimal, Int32)

將小數值四捨五入至指定小數位數,並將中點數四捨五入至最近的偶數。

Round(Decimal, MidpointRounding)

使用指定的四捨五入約定,將小數值四捨五入整數。

Round(Decimal)

將小數值四捨五入為最近的整數值,並將中點值四捨五入至最近的偶數。

Round(Double, Int32, MidpointRounding)

利用指定的四捨五入慣例,將雙精度浮點數數四捨五入至指定數量的分數位數。

Round(Double, Int32)

將雙精度浮點數取整至指定小數位數,並將中點數取整至最近的偶數。

Round(Double, MidpointRounding)

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

Round(Double)

將雙精度浮點數取整至最近的整數值,並將中點數取入至最近的偶數。

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)

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

適用於