我正在编写将0到1之间的二进制数字转换为十进制的代码。我编写了代码,使用0.1(相当于十进制的0.5)进行了测试,并且可以正常工作。当我用0.01和0.001进行测试时,给出了错误的答案(尽管很接近)。我去了python导师,发现在进行第二次迭代时,它无法将0.1 float转换为字符串。它会返回“ 0.09999999999999964”。还有另一种方法可以进行这种转换吗?
这是数字方法转换的算法。
答案 0 :(得分:2)
该错误是由浮点舍入错误引起的。您可以选择使用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
并被舍入。