go学习记录2025-03-21


浮点数计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
go浮点数的表现形势
123.E+20 = 123*10^20
123E20 = 123*10^20
123E-20 = 123*10^-20

大数计算
123E20打印出来的值有偏差,使用big确保没有误差
如果是整数运算
10^20 res:= new(big.Int).Exp(big.NewInt(10), big.NewInt(20), nil)
123*10^20 = new(big.Int).Mul(big.NewInt(123), res)

如果是浮点数计算
10^-20 = new(big.Float).SetPrec(100).SetFloat64(1e-20)
或者
new(big.Float).Quo(big.NewFloat(1), big.NewFloat(1e20))
相当于1/10^20

十六进制的浮点数
0x1.Fp0 = 1*16^0+15*16^-1 0x代表了十六进制,1.F,1是整数位,F是小数,F=15*16^-1=15/16,F在十六进制中代表了15,加上前面的整数位1*16^0,p后面的0代表着2^0 = 1,对结果没有影响
0X.8p1 = (8*16^-1+0*16^0)*2^1 0X也是代表十六进制,.8是0.8的简写,0是整数,8是小时,8*16^-1 = 8/16,p后面的部分是2^1=2,结果就是(8/16+0)*2
0X1FFFP-16 = 1*16^3+F*16^2+F*16^1+F*16^0*2^-16,F=15 所以结果=16^3+15*16^2+15*16+15/2^16,2^16 = 65535,所以=8191/65535 0.124986648