Go语言math包提供float64类型数学函数,包含Pi、E常量及Inf、NaN处理;支持绝对值、最值、取整等基本运算;涵盖幂、对数、三角函数及实用工具如Hypot、Mod等,适用于科学计算与算法开发。

Go语言的 math 包提供了丰富的数学函数,适用于浮点数、三角函数、对数、幂运算等常见计算场景。所有函数操作基于 float64 类型,部分函数也支持特殊值如 ±Inf、NaN 的处理。以下是常用 math 函数的使用方法汇总,帮助你在实际开发中快速查阅和应用。
基本常量与特殊值判断
math 包定义了一些常用的数学常量和用于判断特殊浮点值的函数:
- math.Pi:圆周率 π,约等于 3.141592653589793
- math.E:自然常数 e,约等于 2.718281828459045
- math.Inf(1):正无穷大
- math.Inf(-1):负无穷大
- math.NaN():表示“非数字”(Not a Number)
- math.IsNaN(x):判断 x 是否为 NaN
- math.IsInf(x, 0):判断 x 是否为无穷大(第三个参数可指定正/负)
基本数学运算函数
处理常见的数值计算,如绝对值、最大最小值、取整等:
- math.Abs(x):返回 x 的绝对值
- math.Max(x, y):返回 x 和 y 中较大的值
- math.Min(x, y):返回 x 和 y 中较小的值
- math.Ceil(x):向上取整,返回 ≥x 的最小整数
- math.Floor(x):向下取整,返回 ≤x 的最大整数
- math.Round(x):四舍五入到最近的整数
- math.Trunc(x):截断小数部分,保留整数部分
幂、指数与对数运算
用于科学计算或算法中的指数增长、衰减等场景:
立即学习“go语言免费学习笔记(深入)”;
- math.Pow(x, y):计算 x 的 y 次方
- math.Sqrt(x):计算 x 的平方根
- math.Exp(x):计算 e^x
- math.Log(x):计算 x 的自然对数(以 e 为底)
- math.Log10(x):计算以 10 为底的对数
- math.Log2(x):计算以 2 为底的对数
- math.Log1p(x):计算 ln(1+x),在 x 接近 0 时更精确
三角函数与反三角函数
角度需转换为弧度进行计算,Go 中不提供自动转换:
- math.Sin(x)、math.Cos(x)、math.Tan(x):标准三角函数(x 为弧度)
- math.Asin(x)、math.Acos(x)、math.Atan(x):反三角函数,返回弧度值
- math.Atan2(y, x):返回从原点到点 (x,y) 的向量与 x 轴的夹角,范围 [-π, π]
- 角度转弧度:radians = degrees * math.Pi / 180
- 弧度转角度:degrees = radians * 180 / math.Pi
其他实用函数
一些特定用途但非常有用的数学工具:
- math.Mod(x, y):返回 x 除以 y 的浮点余数
- math.Hypot(x, y):计算直角边为 x 和 y 的直角三角形斜边长度,即 √(x² + y²),避免溢出
- math.Dim(x, y):返回 max(x-y, 0),常用于计算正值差
- math.Copysign(x, y):返回 |x| 但带有 y 的符号
- math.Remainder(x, y):IEEE 754 规范的余数函数,比 Mod 更精确
基本上就这些。math 包覆盖了大多数工程和算法中需要的数学操作,使用时注意输入类型应为 float64,整型需显式转换。对于特殊值处理(如 NaN、Inf),建议结合 IsNaN、IsInf 判断避免逻辑错误。不复杂但容易忽略细节,比如角度单位或边界情况。合理使用这些函数能提升代码准确性和可读性。










