python - 在浮点变量中转换字符串格式返回错误值
问题描述
我正在编写一个代码来将 0 到 1 之间的二进制数转换为十进制。我编写了代码,用 0.1(相当于十进制的 0.5)进行了测试,它工作正常。当我用 0.01 和 0.001 测试它时,我得到了错误的答案(尽管很接近)。我去找了python导师,发现在进行第二次迭代时,它将无法将0.1浮点数转换为字符串。它将返回“0.09999999999999964”。还有其他方法可以进行这种转换吗?
这是一种来自数值方法转换的算法。
解决方案
该错误是由浮点舍入错误引起的。您可以选择使用以下方法对字符串进行四舍五入format
:
str(0.1 + 0.2)
# => ''0.30000000000000004'
'{:.10f}'.format(0.1 + 0.2)
# => '0.3000000000'
格式字符串.10f
告诉format
您想要一个精度为 10 位的浮点数。
或者,您可以使用更精确的数字表示,例如decimal
from decimal import Decimal
str(Decimal('0.1') + Decimal('0.2'))
# => '0.3'
请注意如何将0.1
和0.2
放在引号中以使它们成为字符串,这样它们就不会被转换为float
错误的值。
推荐阅读
- apache-storm - 阿帕奇风暴 1.1.0
- javascript - Create an instance of an object with the help of function (dynamically), on event triggers
- azure - 获取当前状态而不是时间范围
- c# - 如何避免此代码中的堆栈溢出异常?
- c# - 如何放置预制件,然后在查看时通过语音将其移除
- spring-boot - 如何在 Apache Ignite、sfl4j 或 log4j 中配置日志记录
- c# - How to connect to IoT Edge System Module using IoT Device SDK
- windows - 如何恢复用户配置组策略下的管理模板?
- c++ - “如何在课堂上解决‘调整我的最大身高’问题”
- ios - iOS中的底部选择视图