python - 如何计算为浮点数存储的二进制近似值的真实十进制值
问题描述
我正在研究python doc,它说
如果 Python 要打印存储为 0.1 的二进制近似值的真实十进制值,则必须显示
>>> 0.1
0.1000000000000000055511151231257827021181583404541015625
我的问题是,我可以使用现有的 API 来获取长字符串值吗?
还是我必须手动执行此操作?喜欢
target = 0.1
tem = 0.0
for i in range(-1, -307, -1):
if (2 ** i < target):
if (tem + 2 ** i < target):
tem += 2 ** i
print(i)
else:
break
这个代码块只是为了演示我想要得到的东西。
我在 SO 内部进行了搜索,发现人们只是引用了文档而没有提供实现。
解决方案
从我自己的谷歌搜索中偶然发现了这一点,并在其他地方找到了解决方案(@PM 2RING 在这里提到)。
a = ('{:.53f}'.format(target))
格式选项允许您强制变量显式包含 53 个小数点,然后将其存储为字符串。
推荐阅读
- php - WordPress 自定义端点位于错误的命名空间中
- javascript - React 功能组件表单处理与处于状态的对象
- swift - 如何快速更新表格视图单元格约束
- c - rep movsd 在这个二元炸弹阶段的背景下做了什么?
- c# - 在 DataSet 中获取更改并将其保存到数据库的最佳方法
- python - 如何解决错误?“节点”对象在 Google Colab 中没有属性“输出掩码”
- scala - 无法在 Twirl 中呈现 for 循环
- c++ - 排序数组超出大小
- docker - docker-compose build nginx:网络错误(检查互联网连接和防火墙)
- javascript - 有没有办法(在 vanilla javascript 中)防止在一个匹配多个键的数组中重复 rng 生成的对象?