浮点数运算丢失精度
今天碰到了这样一个情况, 使我又去翻阅了原来课本, 在Pthon中如果输入下面这段程序:
print(sys.float_info.max - 1.0)
print(sys.float_info.max...浮点数
但是, 在正常使用的时候, 通常是不知道小数的确切位数, 怎么办呢? 科学记数法想必都不陌生 a*b^n, 浮点数其实就是根据它来, 其存储结构如下(64位):
?...再看
回顾了小数的保存之后, 再来回看之前的, 为什么浮点数最大值, 减去1之后, 本身没有任何变化呢?
要回答这个问题, 还需要知道两个浮点数在计算机中是如何进行计算的....所以, 要将浮点数1.0进行转换, 而这个数字要想转换成相同指数的话, 其基数部分就要后移1023位, 导致溢出, 就变成0了. 所以就相当于和0做运算, 其结果不变....同时, 因为浮点数能表示的范围比整数要大, 在转整数的时候, 也可能会造成丢失.
----
最终搞懂了这个看似奇怪的现象, 唉, 基础还是不够啊.