golang浮点型

发布于 1 年前 作者 phonegap100 237 次浏览 最后一次编辑是 1 年前 来自 分享

更多关于golang语言中的浮点型视频教程访问https://www.itying.com/category-90-b0.html

Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE 754标准: float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32。 float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64。

打印浮点数时,可以使用fmt包配合动词%f,代码如下:

package main
import (
	"fmt"
	"math"
)

func main() {
	fmt.Printf("%f\n", math.Pi)   //默认保留6位小数
	fmt.Printf("%.2f\n", math.Pi)  //保留2位小数
}

Go语言中浮点数默认是float64

num := 1.1
fmt.Printf("值:%v--类型:%T", num, num) //值:1.1--类型:float64

Golang中float精度丢失问题

几乎所有的编程语言都有精度丢失这个问题,这是典型的二进制浮点数精度损失问题,在定长条件下,二进制小数和十进制小数互转可能有精度丢失。

d := 1129.6
fmt.Println((d * 100))   //输出:112959.99999999999

var d float64 = 1129.6
fmt.Println((d * 100)) //输出:112959.99999999999


m1 := 8.2
m2 := 3.8
fmt.Println(m1 - m2) // 期望是4.4,结果打印出了4.399999999999999

使用第三方包来解决精度损失问题:

https://github.com/shopspring/decimal

Golang科学计数法表示浮点类型

num8 := 5.1234e2 // ? 5.1234 * 10的2次方
num9 := 5.1234E2 // ? 5.1234 * 10的2次方 shift+alt+向下的箭头
num10 := 5.1234E-2 // ? 5.1234 / 10的2次方 0.051234
	
fmt.Println("num8=", num8, "num9=", num9, "num10=", num10)
回到顶部