math 包基本用法
math 包提供了基本的数学常数和数学函数。
数学常数
package main
import (
"fmt"
"math"
)
func main() {
// 数学常数
fmt.Printf("Pi: %v\n", math.Pi)
fmt.Printf("E: %v\n", math.E)
fmt.Printf("Phi (黄金比例): %v\n", math.Phi)
// 极限值
fmt.Printf("MaxFloat64: %v\n", math.MaxFloat64)
fmt.Printf("SmallestNonzeroFloat64: %v\n", math.SmallestNonzeroFloat64)
fmt.Printf("MaxInt: %v\n", math.MaxInt)
fmt.Printf("MinInt: %v\n", math.MinInt)
}
基本数学函数
package main
import (
"fmt"
"math"
)
func main() {
// 绝对值
fmt.Printf("Abs(-10) = %v\n", math.Abs(-10))
// 取整
fmt.Printf("Floor(3.7) = %v\n", math.Floor(3.7))
fmt.Printf("Ceil(3.2) = %v\n", math.Ceil(3.2))
fmt.Printf("Round(3.5) = %v\n", math.Round(3.5))
fmt.Printf("Trunc(3.7) = %v\n", math.Trunc(3.7))
// 最大最小值
fmt.Printf("Max(5, 3) = %v\n", math.Max(5, 3))
fmt.Printf("Min(5, 3) = %v\n", math.Min(5, 3))
// 幂运算
fmt.Printf("Pow(2, 10) = %v\n", math.Pow(2, 10))
fmt.Printf("Sqrt(16) = %v\n", math.Sqrt(16))
fmt.Printf("Cbrt(27) = %v\n", math.Cbrt(27))
}
三角函数
package main
import (
"fmt"
"math"
)
func main() {
// 角度转弧度
degrees := 45.0
radians := degrees * math.Pi / 180
// 三角函数
fmt.Printf("Sin(45°) = %v\n", math.Sin(radians))
fmt.Printf("Cos(45°) = %v\n", math.Cos(radians))
fmt.Printf("Tan(45°) = %v\n", math.Tan(radians))
// 反三角函数
sinValue := 0.7071067811865476
fmt.Printf("Asin(0.707) = %v rad\n", math.Asin(sinValue))
fmt.Printf("Asin(0.707) = %v°\n", math.Asin(sinValue)*180/math.Pi)
}
对数和指数
package main
import (
"fmt"
"math"
)
func main() {
// 自然对数
fmt.Printf("Log(E) = %v\n", math.Log(math.E))
fmt.Printf("Log(10) = %v\n", math.Log(10))
// 常用对数 (以10为底)
fmt.Printf("Log10(100) = %v\n", math.Log10(100))
// 以2为底的对数
fmt.Printf("Log2(1024) = %v\n", math.Log2(1024))
// 指数函数
fmt.Printf("Exp(1) = %v\n", math.Exp(1))
fmt.Printf("Exp(2) = %v\n", math.Exp(2))
// 指数减1 (高精度)
fmt.Printf("Expm1(0.001) = %v\n", math.Expm1(0.001))
}
特殊函数
package main
import (
"fmt"
"math"
)
func main() {
// 判断特殊值
fmt.Printf("IsNaN(NaN) = %v\n", math.IsNaN(math.NaN()))
fmt.Printf("IsInf(+Inf, 1) = %v\n", math.IsInf(math.Inf(1), 1))
fmt.Printf("IsInf(-Inf, -1) = %v\n", math.IsInf(math.Inf(-1), -1))
// 无穷大
fmt.Printf("Inf(1) = %v\n", math.Inf(1))
fmt.Printf("Inf(-1) = %v\n", math.Inf(-1))
// NaN
fmt.Printf("NaN() = %v\n", math.NaN())
// 符号函数
fmt.Printf("Copysign(10, -1) = %v\n", math.Copysign(10, -1))
fmt.Printf("Signbit(-10) = %v\n", math.Signbit(-10))
}
总结
| 功能 | 函数 | 说明 |
|---|---|---|
| 常数 | Pi, E |
圆周率和自然常数 |
| 绝对值 | Abs(x) |
绝对值 |
| 取整 | Floor, Ceil, Round |
向下、向上、四舍五入 |
| 最大最小 | Max, Min |
最大最小值 |
| 幂运算 | Pow, Sqrt, Cbrt |
幂、平方根、立方根 |
| 三角函数 | Sin, Cos, Tan |
正弦、余弦、正切 |
| 对数 | Log, Log10, Log2 |
自然对数、常用对数、以2为底 |
| 指数 | Exp |
e的幂 |