Go语言标准库中math模块详细功能介绍与示例代码

 更新时间:2025年03月29日 11:16:55   作者:demonlg0112  
Go语言的标准库math提供了一系列基础数学函数和常量,用于进行科学计算、几何计算和其他数学相关的操作,这篇文章主要介绍了Go语言标准库中math模块详细功能介绍与示例代码,需要的朋友可以参考下

Go语言的 math 模块提供了丰富的数学函数和常量,涵盖基本运算、三角函数、指数、对数、取整、特殊值等。以下是核心方法及示例说明:

1. 基本数学运算

math.Abs

取绝对值(仅 float64)。

fmt.Println(math.Abs(-3.5))   // 输出: 3.5
fmt.Println(math.Abs(4))      // 错误!需用 math.Abs(4.0)

math.Mod 和 math.Remainder

  • Mod:取余数(符号与除数相同)。
  • Remainder:IEEE 754 标准余数(符号与被除数相同)。
fmt.Println(math.Mod(10, 3))        // 输出: 1
fmt.Println(math.Remainder(10, 3))  // 输出: 1
fmt.Println(math.Mod(-10, 3))       // 输出: -1
fmt.Println(math.Remainder(-10, 3)) // 输出: -1

math.Cbrt 和 math.Sqrt

立方根和平方根。

fmt.Println(math.Sqrt(16))  // 输出: 4
fmt.Println(math.Cbrt(27))  // 输出: 3

2. 三角函数

所有函数参数为弧度(非角度)。

math.Sin、math.Cos、math.Tan

rad := math.Pi / 2
fmt.Println(math.Sin(rad))  // 输出: 1(近似值)
fmt.Println(math.Cos(rad))  // 输出: 6.123e-17(接近0)

math.Asin、math.Acos、math.Atan

反三角函数(返回弧度)。

fmt.Println(math.Asin(1))  // 输出: 1.5708(π/2)

3. 指数与对数

math.Exp 和 math.Log

自然指数和对数。

fmt.Println(math.Exp(2))     // 输出: ~7.389(e²)
fmt.Println(math.Log(7.389)) // 输出: ~2

math.Pow 和 math.Pow10

幂运算。

fmt.Println(math.Pow(2, 3))    // 输出: 8
fmt.Println(math.Pow10(3))     // 输出: 1000

math.Log10 和 math.Log2

以10或2为底的对数。

fmt.Println(math.Log10(1000))  // 输出: 3
fmt.Println(math.Log2(8))      // 输出: 3

4. 取整与截断

math.Ceil 和 math.Floor

向上和向下取整。

fmt.Println(math.Ceil(3.2))   // 输出: 4
fmt.Println(math.Floor(3.9))  // 输出: 3

math.Trunc

直接截断小数部分。

fmt.Println(math.Trunc(3.9))  // 输出: 3

math.Round 和 math.RoundToEven

四舍五入(RoundToEven 向最近的偶数舍入)。

fmt.Println(math.Round(2.5))          // 输出: 3
fmt.Println(math.RoundToEven(2.5))    // 输出: 2

5. 最大值与最小值

math.Max 和 math.Min

返回两个 float64 值的最大或最小值。

fmt.Println(math.Max(3, 5))  // 输出: 5
fmt.Println(math.Min(3, 5))  // 输出: 3

6. 特殊值处理

math.IsNaN 和 math.IsInf

检查是否为非数值或无穷大。

val := math.Log(-1)  // 生成 NaN
fmt.Println(math.IsNaN(val))  // 输出: true
fmt.Println(math.IsInf(1/math.Inf(1), 0)) // 检查是否无穷大

math.Inf 和 math.NaN

生成无穷大或非数值。

posInf := math.Inf(1)  // 正无穷
negInf := math.Inf(-1) // 负无穷
nan := math.NaN()

7. 特殊函数

math.Hypot

计算直角三角形的斜边长度。

fmt.Println(math.Hypot(3, 4))  // 输出: 5

math.Gamma 和 math.Erf

伽马函数和误差函数。

fmt.Println(math.Gamma(5))  // 输出: 24(4!)
fmt.Println(math.Erf(1))    // 输出: ~0.8427

8. 数学常量

常用常量

fmt.Println(math.Pi)     // 输出: 3.141592653589793
fmt.Println(math.E)      // 输出: 2.718281828459045
fmt.Println(math.Phi)    // 输出: 1.618033988749895(黄金分割)

总结

  • 核心功能
    • 基础运算AbsModSqrtPow
    • 三角函数SinCosAsin
    • 指数对数ExpLogLog10
    • 取整处理CeilFloorRound
    • 特殊值NaNInfIsNaN
    • 常量PiE
  • 注意事项
    • 所有函数操作 float64 类型(需显式转换其他类型)。
    • 三角函数参数为弧度(需将角度转换为弧度:rad = degrees * π / 180)。
    • 处理特殊值(如 NaN)时需用 math.IsNaN 判断,不可直接比较。

到此这篇关于Go语言标准库中math模块详细功能介绍与示例代码的文章就介绍到这了,更多相关Go语言标准库math模块介绍内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang中单向channel的语法介绍

    golang中单向channel的语法介绍

    通过消息来共享数据是golang的一种设计哲学,channel则是这种哲理的体现。下面这篇文章主要给大家介绍了关于golang中单向channel语法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-07-07
  • 解决GOPATH在GOLAND中的坑

    解决GOPATH在GOLAND中的坑

    这篇文章主要介绍了解决GOPATH在GOLAND中的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go 的入口函数和包初始化的使用

    Go 的入口函数和包初始化的使用

    本文主要介绍了Go 的入口函数和包初始化的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 深入分析golang多值返回以及闭包的实现

    深入分析golang多值返回以及闭包的实现

    相对于C/C++,golang有很多新颖的特性,例如goroutine,channel等等,这些特性其实从golang源码是可以理解其实现的原理。今天这篇文章主要来分析下golang多值返回以及闭包的实现,因为这两个实现golang源码中并不存在,我们必须从汇编的角度来窥探二者的实现。
    2016-09-09
  • golang切片扩容规则实现

    golang切片扩容规则实现

    这篇文章主要介绍了golang切片扩容规则实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Golang操作mongodb的实现示例

    Golang操作mongodb的实现示例

    本文主要介绍了Golang操作mongodb的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • 详解Go语言如何利用上下文进行并发计算

    详解Go语言如何利用上下文进行并发计算

    在Go编程中,上下文(context)是一个非常重要的概念,它包含了与请求相关的信息,本文主要来和大家讨论一下如何在并发计算中使用上下文,感兴趣的可以了解下
    2024-02-02
  • go编译so库让python引用编译后没有.h文件的问题

    go编译so库让python引用编译后没有.h文件的问题

    有时python需要引用go的一些开源库,这时就需要go编译成python可调用的库,本文给大家介绍了go编译so库让python引用,编译后没有.h文件的问题,需要的朋友可以参考下
    2024-02-02
  • Golang二维数组的使用方式

    Golang二维数组的使用方式

    之前给大家讲过很多二维数组的知识,今天重点给大家介绍Golang二维数组的使用方式,通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-05-05
  • golang 之import和package的使用

    golang 之import和package的使用

    这篇文章主要介绍了golang 之import和package的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02

最新评论