浮点数运算丢失精度
今天碰到了这样一个情况, 使我又去翻阅了原来课本, 在Pthon中如果输入下面这段程序:
print(sys.float_info.max - 1.0)
print(sys.float_info.max...结果显示, 两个数字完全一样, 这这这, 不行, 我得去回顾一下浮点数的表示.
小数的存储
如果要存储小数, 一般来说又两种保存方式.
1. 固定位数
将小数进行放大, 进行整数化, 然后保存整数....如果固定知道是两位小数的话, 那么将小数乘以100, 就得到了一个对应的整数.
这种方式的前提是需要确切的知道小数的位数, 但是好在精度高, 在运算的时候不会造成误差. 比较适合保存金额等....所以就相当于和0做运算, 其结果不变.
如此说来, 浮点数的指数在进行转换的时候, 岂不是很容易丢失精度?...为了验证我的猜想, 只要将计算顺序修改, 当 s 变量还没有小数部分, 不至于丢失精度的时候进行大数的运算:
a = 1.0
b = 0.12345678
c = 0.11111111
s = 0.0