如何解决“ 3*10**(0) + 8*10**(-1) + 5*10**(-2) + 2*10**(-3) 不等于 3.852 ”?
How to fix " 3*10**(0) + 8*10**(-1) + 5*10**(-2) + 2*10**(-3) do not equal 3.852 "?
我有 number_list ['3', '.', '8', '5', '2'] 并尝试通过
转换回 3.852
>>> 3*10**(0) + 8*10**(-1) + 5*10**(-2) + 2*10**(-3)
3.8519999999999994
为什么我得到的是 3.8519999999999994,而不是 3.852?如何解决?
部分计算独立进行。
>>> 3*10**(0)
3
>>> 8*10**(-1)
0.8
>>> 5*10**(-2)
0.05
>>> 2*10**(-3)
0.002
如果您希望结果在小数点后 3 位以内,您可以使用 python 内置函数 round
expression = 3*10**(0) + 8*10**(-1) + 5*10**(-2) + 2*10**(-3)
round(expression, 3)
您可以使用字符串连接和解析输出字符串来解决此问题。
示例:
number_list = ['3', '.', '8', '5', '2']
parsed_number = float("".join(number_list))
print(parsed_number)
# Output: 3.852
我有 number_list ['3', '.', '8', '5', '2'] 并尝试通过
转换回 3.852>>> 3*10**(0) + 8*10**(-1) + 5*10**(-2) + 2*10**(-3)
3.8519999999999994
为什么我得到的是 3.8519999999999994,而不是 3.852?如何解决? 部分计算独立进行。
>>> 3*10**(0)
3
>>> 8*10**(-1)
0.8
>>> 5*10**(-2)
0.05
>>> 2*10**(-3)
0.002
如果您希望结果在小数点后 3 位以内,您可以使用 python 内置函数 round
expression = 3*10**(0) + 8*10**(-1) + 5*10**(-2) + 2*10**(-3)
round(expression, 3)
您可以使用字符串连接和解析输出字符串来解决此问题。
示例:
number_list = ['3', '.', '8', '5', '2']
parsed_number = float("".join(number_list))
print(parsed_number)
# Output: 3.852