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的幂
如有疑问关注公众号给我留言
wx

关注公众号

©2017-2023 鲁ICP备17023316号-1 Powered by Hugo