a = 1
for x in range(5):
a += 0.1
print(a)
这是结果:
1.1
1.2000000000000002
1.3000000000000003
1.4000000000000004
1.5000000000000004
我该如何解决? round()
功能是唯一的方法吗?可以在设置变量值之前设置其精度吗?
您可以这样格式化输出;
float()
假设您的问题只是显示数字,@ Jaco的答案就可以了。但是,如果您担心使用该变量并可能进行比较或分配给字典键,那么我想您必须坚持round()。例如,这行不通:
>>> from decimal import Decimal, getcontext
>>>
>>> getcontext().prec = 5
>>>
>>> a = Decimal(1)
>>>
>>> for x in range(5):
... a += Decimal(0.1)
... print(a)
...
1.1000
1.2000
1.3000
1.4000
1.5000
您必须这样做:
a=1
for x in range(5):
a += 0.1
print("{:.9f}".format(a) )
@ Jaco已适当建议格式化输出。但是,如果您希望控制变量的精度而不是纯输出,则可能需要查看a = 1
for x in range(5):
a += 0.1
print('%.1f' % a)
if a == 1.3:
break
1.1
1.2
1.3
1.4
1.5
模块。
a = 1
for x in range(5):
a += 0.1
print('%.1f' % a)
if round(a, 1) == 1.3:
break
1.1
1.2
1.3