以下是C#中 Math
类提供的常用数学函数和常量的全面总结,分类整理并附示例说明:
一、基础数学函数
-
绝对值
Math.Abs(double value)
说明:返回数值的绝对值。
重载:支持int
,double
,float
,decimal
等类型。
示例:Math.Abs(-5.5) // 5.5
-
最大值与最小值
Math.Max(val1, val2)
与Math.Min(val1, val2)
说明:返回两个值中较大或较小的一个。
重载:支持所有数值类型。
示例:Math.Max(3, 9) // 9 Math.Min(-2, 5) // -2
二、三角函数(角度单位为弧度)
-
基本三角函数
Math.Sin(radians)
Math.Cos(radians)
Math.Tan(radians)
示例:Math.Sin(Math.PI / 6) // ≈0.5 (30度对应正弦值)
-
反三角函数
Math.Asin(x)
→ 返回范围:[-π/2, π/2]Math.Acos(x)
→ 返回范围:[0, π]Math.Atan(x)
→ 返回范围:[-π/2, π/2]
注意:输入值范围需为 [-1, 1](Asin
和Acos
)。
示例:Math.Atan(1) // π/4
-
Atan2(y, x)
Math.Atan2(y, x)
说明:计算点(x,y)
的角度(考虑象限)。
示例:Math.Atan2(1, 1) // π/4 Math.Atan2(-1, -1) // -3π/4
-
双曲函数
Math.Sinh(radians)
Math.Cosh(radians)
Math.Tanh(radians)
示例:Math.Tanh(0) // 0
三、指数与对数函数
-
指数函数
Math.Exp(x)
说明:返回 e 的指定幂次。
示例:Math.Exp(1) // ≈2.718 (e的值)
-
幂函数
Math.Pow(x, y)
说明:计算 x 的 y 次方。
示例:Math.Pow(2, 3) // 8
-
平方根
Math.Sqrt(x)
示例:Math.Sqrt(16) // 4
-
对数函数
Math.Log(x)
→ 自然对数(底为 e)Math.Log(x, base)
→ 指定底的对数Math.Log10(x)
→ 底为 10 的对数
示例:Math.Log(Math.E) // 1 Math.Log10(100) // 2 Math.Log(8, 2) // 3
四、舍入与截断
-
四舍五入
Math.Round(x)
重载:支持小数位数和舍入模式(例如MidpointRounding
)。
示例:Math.Round(2.5) // 2(默认四舍六入五取偶) Math.Round(2.5, MidpointRounding.AwayFromZero) // 3
-
向上取整
Math.Ceiling(x)
示例:Math.Ceiling(2.3) // 3
-
向下取整
Math.Floor(x)
示例:Math.Floor(2.7) // 2
-
截断小数部分
Math.Truncate(x)
示例:Math.Truncate(-3.7) // -3(直接截断)
五、符号与数值处理
-
符号函数
Math.Sign(x)
返回值:1(正数)、-1(负数)、0。
示例:Math.Sign(-5) // -1
-
数值范围限制
Math.Clamp(value, min, max)
说明:将value
限制在min
和max
之间。
示例:Math.Clamp(15, 0, 10) // 10
-
浮点数微调
Math.BitIncrement(x)
与Math.BitDecrement(x)
说明:返回大于或小于x
的最小浮点数(基于二进制位操作)。
示例:Math.BitIncrement(1.0) // 1.0000000000000002(double)
六、其他实用方法
-
积商余数计算
Math.DivRem(a, b, out remainder)
说明:返回商并将余数存入remainder
。
示例:int rem; Math.DivRem(10, 3, out rem) // 商=3, rem=1
-
融合乘加运算
Math.FusedMultiplyAdd(a, b, c)
说明:高效计算a*b + c
(单次舍入误差)。
-
IEEE余数
Math.IEEERemainder(a, b)
示例:Math.IEEERemainder(10, 3) // ≈-1
七、常量
Math.E
→ 自然对数的底 e(≈2.71828)。Math.PI
→ π(≈3.14159)。
八、注意事项
- 数值类型重载:大多数方法支持
double
和float
,部分支持int
或decimal
。 - 异常处理:如负数传给
Sqrt
或Log
会导致NaN
,超出范围的参数会抛出异常。 - 浮点精度问题:浮点运算可能存在舍入误差(例如
0.1 + 0.2 = 0.30000000000000004
)。 - 高版本函数:如
ScaleB
,ReciprocalEstimate
在 .NET 5+ 中引入。
以上列举涵盖了C# Math
类的核心功能,适用于数值运算、几何计算等场景。使用时需根据需求选择合适方法和类型。