摘要
C# 中的 Math 类是一个非常有用的类,它提供了许多数学计算所需的基本功能,例如加法、减法、乘法、除法、幂、对数、三角函数等。这些函数都是静态的,因此可以通过直接使用 Math 类来调用它们,而不需要实例化一个对象。
除了基本的数学函数之外,Math 类还提供了一些特殊的功能,例如向量、矩阵、圆和三角形等。这些功能都可以通过 Math 类中的静态方法来访问和操作。
在实际编程中,Math 类非常有用。例如,当我们需要计算一个函数的导数时,可以使用 Math 类中的导数函数;当我们需要计算两个向量的点积时,可以使用 Math 类中的点积函数;当我们需要计算一个三角形的面积时,可以使用 Math 类中的面积函数等。
正文
字段
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) | 返回余弦值为指定数字的角度。 |
Acosh(Double) | 返回双曲余弦值为指定数字的角度。 |
Asin(Double) | 返回正弦值为指定数字的角度。 |
Asinh(Double) | 返回双曲正弦值为指定数字的角度。 |
Atan(Double) | 返回正切值为指定数字的角度。 |
Atan2(Double, Double) | 返回正切值为两个指定数字的商的角度。 |
Atanh(Double) | 返回双曲正切值为指定数字的角度。 |
BigMul(Int32, Int32) | 生成两个 32 位数字的完整乘积。 |
BigMul(Int64, Int64, Int64) | 生成两个 64 位数的完整乘积。 |
BigMul(UInt64, UInt64, UInt64) | 生成两个无符号 64 位数的完整乘积。 |
BitDecrement(Double) | 返回比较小于指定值的最大值。 |
BitIncrement(Double) | 返回与指定值相比较的最小值。 |
Cbrt(Double) | 返回指定数字的立方根。 |
Ceiling(Decimal) | 返回大于或等于指定的十进制数的最小整数值。 |
Ceiling(Double) | 返回大于或等于指定的双精度浮点数的最小整数值。 |
Clamp(Byte, Byte, Byte) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(Decimal, Decimal, Decimal) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(Double, Double, Double) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(Int16, Int16, Int16) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(Int32, Int32, Int32) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(Int64, Int64, Int64) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(IntPtr, IntPtr, IntPtr) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(SByte, SByte, SByte) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(Single, Single, Single) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(UInt16, UInt16, UInt16) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(UInt32, UInt32, UInt32) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(UInt64, UInt64, UInt64) | 返回限制在 min 和 max 范围内(含首尾)的 value 。 |
Clamp(UIntPtr, UIntPtr, UIntPtr) | 返回限制在 min 和 max 范围内(含首尾)的 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) | 计算指定双精度浮点数的整数部分。 |
一个例子
static void Main(string[] args)
{
Console.WriteLine(Math.Round(4.4)); // 4
Console.WriteLine(Math.Round(4.5)); // 4
Console.WriteLine(Math.Round(4.6)); // 5
Console.WriteLine(Math.Round(5.5)); // 6
}
注意:"四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一"
如果需要修改为标准的四舍五入,
static void Main(string[] args)
{
Console.WriteLine(Math.Round(4.4, MidpointRounding.AwayFromZero)); // 4
Console.WriteLine(Math.Round(4.5, MidpointRounding.AwayFromZero)); // 5
Console.WriteLine(Math.Round(4.6, MidpointRounding.AwayFromZero)); // 5
Console.WriteLine(Math.Round(5.5, MidpointRounding.AwayFromZero)); // 6
}
一个例子
向上取整,或向下地板取整
static void Main(string[] args)
{
double d1 = 3.1415;
double d2=Math.Ceiling(d1);//4
double d3= Math.Floor(d1);//3
Console.WriteLine($"d2={d2},d3={d3}",d2,d3);
}