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
|