1. 浮点类型的说明:
浮点型有2个float32、float64。如下:
浮点有下面特征:
- 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位 。说明:浮点数都是有符号的.。
- 尾数部分可能丢失,造成精度损失。例如: -123.0000901。
- float64 的精度比 float32 的要准确,如果我们要保存一个精度高的数,则应该选用 float64。通常情况下,应该使用 float64 ,因为它比 float32 更精确。[开发中,推荐使用 float64]
- Golang 的浮点型默认声明为 float64 类型。例如:var num = 1.1,就默认num是float64。
浮点型常量有两种表示形式。
1)十进制数形式:如:5.12 或者 .512 \(必须有小数点表示0.512) 2)科学计数法形式。如:5.1234e2 = 5.12 \* 10 的 2 次方。 5.12E-2 = 5.12/10 的 2 次方
精度损失例子如下:
package main
import (
"fmt"
)
func main() {
var num1 float32 = 0.00091
var num2 float32 = -0.00005
var num3 float64 = 19000987767
//输出 0.00091 -5e-05 1.9000987767e+10
fmt.Println(num1,num2,num3)
var num4 float32 = -123.0000901
var num5 float64 = -123.0000901
//输出 -123.00009 -123.0000901
//float32 去掉了01,精度减小了。float64 的精度比32位大
fmt.Println(num4,num5)
}
上面的var num4 float32 = -123.0000901 输出的结果是 -123.00009 ,损失了精度。
常量写法例子:科学计数法、小数点的写法。
package main
import (
"fmt"
)
func main() {
var num1 = 5.12
//输出:num1的数据类型是 float64
fmt.Printf("num1的数据类型是 %T ",num1)
//前面一个小数点的写法
var num2 = -.512
var num3 = .512
//输出:-0.512 0.512
fmt.Println(num2,num3)
num4 := 5.1234e2
num5 := 5.12E-2 //E 可以大写,并且指数是负数
//输出:512.34 0.0512
fmt.Println(num4,num5)
}