【发布时间】:2020-12-20 05:20:23
【问题描述】:
问题
如何可视化存储在 Python 内存中的 64 位二进制格式的浮点数 0.1,如图所示?一个 Python 代码,可以显示符号位、指数位和精度位,例如 (1,01010110111,1010101...)。
背景
浮点数需要用二进制位表示,据我从文章中了解到,它是 ± p × 2**e 其中±是 i 1 位,p 是 52 位精度,e 是 11 位的指数.
我想(3 * 0.1 == 0.3) is False的原因是因为0.1不能用64位表示,而在Python中它是0.1000000000000000055511151231257827021181583404541015625十进制。
print(3 * 0.1 == 0.3) # False
print(0.3 * 1 == 0.3) # True
print("%0.55f" % (1.0 / 10))
-----
0.1000000000000000055511151231257827021181583404541015625
print("%0.55f" % (0.1000000000000000055511151231257827021181583404541015625 - 0.1))
-----
0.0000000000000000000000000000000000000000000000000000000
但是,仍然无法理解它是如何工作的,并想看看它在二进制格式中的样子。
【问题讨论】: