浮点
- go语言中提供了两种浮点型
- float32 --用32位(4个字节)来存储
- float64 --用64位(8个字节)来存储
float计算是非精确的
v1:=0.1
v2:=0.2
result:=v1+v2
fmt.Println(result)//0.30000000000000004
v3:=0.2
v4:=0.3
result1:=v3+v4
fmt.Println(result1)//0.5
2.float底层原理
第一步:浮点型转换为二进制
例如:0.3
- 整数部分直接转换 ,二进制位0
- 小数部分,乘以2,如果小于1,则继续乘以2,如果大于1,则减去1,在乘以2,直到结果为1为止。也有可能循环下去,得到每个值得整数部分拼接起来就是小数部分,二级制位:010011 (或者传统方式,除2取余,倒叙排列得的二进制)
0.3 * 2 = 0.6
0.6 * 2 = 1.2 (减去1,还剩0.2)
0.2 * 2 = 0.4
0.4 * 2 = 0.8
0.8 * 2 = 1.6 (减去1,还剩0.6)
0.6 * 2 =