实数
本章学习目标
1、学会用两种不同的类型表示实数
2、学会在内存占用和精确度之间进行取舍
go语言中实数就是表示为浮点数
声明浮点数类型
-
下面三个语句的效果一样
package main import ( "fmt" ) func main() { day1 := 365.2425 var day2 = 365.2425 var day3 float64 = 365.2425 fmt.Printf("day1=%v\nday2=%v\nday3=%v\n", day1, day2, day3) } 执行结果: day1=365.2425 day2=365.2425 day3=365.2425
-
可以看出只要数字含有小数部分,那么它的类型就是float64
-
如果使用一个整数来初始化某个变量,那么你必须指定它的类型为float64,否则它就是一个整数类型
浮点数类型
- Go语言中有两种浮点数类型
- 默认是float64
- 64位的浮点类型占用8字节
- 有些编程语言称为双精度
- float32
- 占用4字节
- 精度比float64低
- 有时叫做单精度类型
- 声明时需要指定float32 例如 var pi32 float32 = math.Pi
单双精度的使用场景
当处理大量数据时,例如游戏,使用float32牺牲精度换内存很有意义。
浮点类型不适合金融计算。
零值
Go里面每个类型都有一个默认值称为零值,当你声明变量后不对它赋值,它值也叫做零值。
显示浮点类型(%f)
-
使用Print或者Println打印浮点类型的时候,默认行为是尽可能的多显示几位小数;
-
如果不想这样,那么你应该使用Printf函数,结合%f格式化动词来指定显示小数的位数
-
package main import ( "fmt" ) func main() { third := 1.0 / 3 fmt.Println(third) fmt.Printf("%v\n", third) //%v 默认支持所以类型的格式化 fmt.Printf("%f\n", third) //%f 浮点类型格式化 fmt.Printf("%.3f\n", third) // %3.f显示3位小数 fmt.Printf("%4.2f\n", third) //%4.2f 总长为4、小数2位,包含小数点 fmt.Printf("%06.2f\n", third) //%06.2f 不足的位由0代替,默认是空格 } 执行结果: 0.3333333333333333 0.3333333333333333 0.333333 0.333 0.33 000.33