宁波网站推广优化公司电话,一个网站怎么做新闻模块,做网站目的,小说网站系统怎么做编程笔记 Golang基础 045 math包 一、math包主要功能常量#xff1a;函数#xff1a;数值运算#xff1a;三角函数#xff1a;对数函数#xff1a;随机数相关#xff1a; 二、示例代码一三、示例代码二小结 Go 语言的标准库 math 提供了一系列基础数学函数和常量#xf… 编程笔记 Golang基础 045 math包 一、math包主要功能常量函数数值运算三角函数对数函数随机数相关 二、示例代码一三、示例代码二小结 Go 语言的标准库 math 提供了一系列基础数学函数和常量用于进行科学计算、几何计算和其他数学相关的操作。以下是一些 math 包中的核心功能和函数。 一、math包
主要功能
Go 语言的标准库 math 包主要用于解决各种基础和高级数学运算问题它提供了大量数学函数和常量服务于编程中涉及的数学需求。math 包主要解决的问题包括但不限于以下几个方面 三角函数计算 正弦Sin、余弦Cos、正切Tan、反正弦Asin、反余弦Acos、反正切Atan以及相应的双曲函数。 指数和对数运算 自然对数Log以 e 为底常用对数Log10以 10 为底指数函数Exp幂运算Pow以及针对特定场景优化的 Log1p用于计算 log(1x) 避免精度损失。 超越函数 幂运算如平方根Sqrt、伽马函数Gamma、误差函数Erf、互补误差函数Erfc以及其他特殊函数如 Bessel 函数J0, J1 等。 浮点数操作 浮点数的绝对值Abs、取整Floor, Ceil, Trunc、四舍五入Round、分解为分数和指数形式Frexp 和 Ldexp、判断是否为无穷大或NaNIsInf, IsNaN以及处理浮点数边界问题如最小非零正浮点数。 几何计算 求直角三角形边长关系如 Hypot 函数计算欧几里得范数以及模运算Mod。 数学常数 提供了常用的数学常数如圆周率 Pi 和自然对数的底数 e。 比较和取值限制 提供了 Min 和 Max 函数来获取两个数之间的较大或较小值。
常量
math.MaxFloat64 和 math.SmallestNonzeroFloat64 分别表示 IEEE-754 浮点数的最大值和最小非零正值。math.Pi 表示圆周率 π。math.E 表示自然对数的底数 e。
示例代码 fmt.Printf(float64的最大值是:%.f\n, math.MaxFloat64)fmt.Printf(float64的最小值是:%.f\n, math.SmallestNonzeroFloat64)fmt.Printf(float32的最大值是:%.f\n, math.MaxFloat32)fmt.Printf(float32的最小值是:%.f\n, math.SmallestNonzeroFloat32)fmt.Printf(Int8的最大值是:%d\n, math.MaxInt8)fmt.Printf(Int8的最小值是:%d\n, math.MinInt8)fmt.Printf(Uint8的最大值是:%d\n, math.MaxUint8)fmt.Printf(Int16的最大值是:%d\n, math.MaxInt16)fmt.Printf(Int16的最小值是:%d\n, math.MinInt16)fmt.Printf(Uint16的最大值是:%d\n, math.MaxUint16)fmt.Printf(Int32的最大值是:%d\n, math.MaxInt32)fmt.Printf(Int32的最小值是:%d\n, math.MinInt32)fmt.Printf(Uint32的最大值是:%d\n, math.MaxUint32)fmt.Printf(Int64的最大值是:%d\n, math.MaxInt64)fmt.Printf(Int64的最小值是:%d\n, math.MinInt64)fmt.Printf(圆周率默认为:%.200f\n, math.Pi)运行结果
float64的最大值是:179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368
float64的最小值是:0
float32的最大值是:340282346638528859811704183484516925440
float32的最小值是:0
Int8的最大值是:127
Int8的最小值是:-128
Uint8的最大值是:255
Int16的最大值是:32767
Int16的最小值是:-32768
Uint16的最大值是:65535
Int32的最大值是:2147483647
Int32的最小值是:-2147483648
Uint32的最大值是:4294967295
Int64的最大值是:9223372036854775807
Int64的最小值是:-9223372036854775808
圆周率默认为:3.14159265358979311599796346854418516159057617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000函数
数值运算
math.Abs(x float64) float64 返回 x 的绝对值。math.Ceil(x float64) float64 返回大于或等于 x 的最小整数。math.Floor(x float64) float64 返回小于或等于 x 的最大整数。math.Pow(x, y float64) float64 返回 x 的 y 次方。math.Sqrt(x float64) float64 返回 x 的平方根。math.Cbrt(x float64) float64 返回 x 的立方根。
三角函数
math.Sin(x float64) float64 返回 x 弧度的正弦值。math.Cos(x float64) float64 返回 x 弧度的余弦值。math.Tan(x float64) float64 返回 x 弧度的正切值。还有它们的反函数如 math.Asin, math.Acos, math.Atan以及双角形式如 math.Sinh, math.Cosh, math.Tanh 等。
对数函数
math.Log(x float64) float64 返回 x 的自然对数以 e 为底。math.Log10(x float64) float64 返回 x 的以10为底的对数。math.Exp(x float64) float64 返回 e 的 x 次方。
随机数相关
虽然 math 包本身不直接提供随机数生成器但 math/rand 子包提供了生成伪随机数的功能
rand.Intn(n int) int 返回一个在 [0, n) 范围内的随机整数。rand.Float64() float64 返回 [0.0, 1.0) 范围内的随机浮点数。
要使用这些函数你需要导入对应的包
import (fmtmath
)func main() {// 示例用法val : math.Sin(math.Pi / 2)fmt.Println(val)
}此外math 包还包含其他高级数学函数比如求最大公约数 (GCD)、最小二乘解 (Sqrt)、反正切函数的完整范围版本 (Atan2) 等。通过查阅官方文档可以获得更完整的函数列表和详细说明。
二、示例代码一
package mainimport (fmtmath
)func main() {/*取绝对值,函数签名如下:func Abs(x float64) float64*/fmt.Printf([-3.14]的绝对值为:[%.2f]\n, math.Abs(-3.14))/*取x的y次方函数签名如下:func Pow(x, y float64) float64*/fmt.Printf([2]的16次方为:[%.f]\n, math.Pow(2, 16))/*取余数函数签名如下:func Pow10(n int) float64*/fmt.Printf(10的[3]次方为:[%.f]\n, math.Pow10(3))/*取x的开平方函数签名如下:func Sqrt(x float64) float64*/fmt.Printf([64]的开平方为:[%.f]\n, math.Sqrt(64))/*取x的开立方函数签名如下:func Cbrt(x float64) float64*/fmt.Printf([27]的开立方为:[%.f]\n, math.Cbrt(27))/*向上取整函数签名如下:func Ceil(x float64) float64*/fmt.Printf([3.14]向上取整为:[%.f]\n, math.Ceil(3.14))/*向下取整函数签名如下:func Floor(x float64) float64*/fmt.Printf([8.75]向下取整为:[%.f]\n, math.Floor(8.75))/*取余数函数签名如下:func Floor(x float64) float64*/fmt.Printf([10/3]的余数为:[%.f]\n, math.Mod(10, 3))/*分别取整数和小数部分,函数签名如下:func Modf(f float64) (int float64, frac float64)*/Integer, Decimal : math.Modf(3.14159265358979)fmt.Printf([3.14159265358979]的整数部分为:[%.f],小数部分为:[%.14f]\n, Integer, Decimal)
}
三、示例代码二
生成随机数。
package mainimport (fmtmath/randtime
)func init() {//以时间作为初始化种子rand.Seed(time.Now().UnixNano())
}
func main() {for i : 0; i 10; i {a : rand.Int()fmt.Println(a)}fmt.Println(------------)for i : 0; i 10; i {a : rand.Intn(100)fmt.Println(a)}fmt.Println(------------)for i : 0; i 10; i {a : rand.Float32()fmt.Println(a)}
}
小结
通过这些函数和常量的支持math 包使得 Go 程序员能够方便地在程序中进行精确的数学计算和分析覆盖了大多数实际编程中可能遇到的基础数学需求。同时math 包也是构建更复杂算法和数学应用的基础模块。