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