2.7 Go语言浮点类型(小数类型) - Go语言中文社区

2.7 Go语言浮点类型(小数类型)


Go语言提供了两种精度的浮点数float32float64,它们的算术规范由 IEEE754 浮点数国际标准定义,该浮点数规范被所有现代的 CPU 支持。

这些浮点数类型的取值范围可以从很微小到很巨大。浮点数取值范围的极限值可以在 math 包中找到:

  • 常量 math.MaxFloat32 表示 float32 能取到的最大数值,大约是 3.4e38;
  • 常量 math.MaxFloat64 表示 float64 能取到的最大数值,大约是 1.8e308; float32 和 float64 能表示的最小值分别为 1.4e-45 和 4.9e-324。

一个 float32 类型的浮点数可以提供大约 6 个十进制数的精度,而 float64 则可以提供约 15 个十进制数的精度,通常应该优先使用 float64 类型,因为 float32 类型的累计计算误差很容易扩散,并且 float32 能精确表示的正整数并不是很大。

  1. var f float32 = 16777216 // 1 << 24
  2. fmt.Println(f == f+1) // "true"!

浮点数在声明的时候可以只写整数部分或者小数部分,像下面这样:

  1. const e = .71828 // 0.71828
  2. const f = 1. // 1

很小或很大的数最好用科学计数法书写,通过 e 或 E 来指定指数部分: 纯文本复制

  1. const Avogadro = 6.02214129e23 // 阿伏伽德罗常数
  2. const Planck = 6.62606957e-34 // 普朗克常数

用 Printf 函数打印浮点数时可以使用“%f”来控制保留几位小数

  1. package main
  2. import (
  3. "fmt"
  4. "math"
  5. )
  6. func main() {
  7. fmt.Printf("%f\n", math.Pi)
  8. fmt.Printf("%.2f\n", math.Pi)
  9. }

运行结果如下所示:

  • 3.141593
  • 3.14
版权声明:本教程内容除了本站原创内容外,还有来源自C语言编程网,博客园,CSDN等技术站点,感谢相关博主原创文章,转载请附上原文出处链接和本声明。
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 阅读 ( 612 )
  • 分类:Go

0 条评论

官方社群

GO教程

猜你喜欢