首页 > 解决方案 > 浮点错误的发生以及如何防止它们

问题描述

我有这个程序计算用户输入的所有值的总数:

result = 0
for i in range(3):
    n = float(input("Enter a value: "))
    result = result + n
print(result)

如果我输入值 1.2、1.3、1.3,输出将是正确的并打印出 3.8 的结果。但是,当我输入三个相同的浮点值时,似乎会出现浮点错误。例如,1.2、1.2、1.2 将打印出 3.5999999999999996。

为什么会出现这种情况?有没有办法可以防止它?

标签: python

解决方案


它不起作用,因为float有更多的十进制数字,有关更多信息,请检查:link,因此您应该执行以下操作:

result = 0
for i in range(3):
    n = float(input("Enter a value: "))
    result = result + n
print('{0:.1f}'.format(result))

输出:

Enter a value: 1.2
Enter a value: 1.2
Enter a value: 1.2
3.6

或者:

result = 0
for i in range(3):
    n = float(input("Enter a value: "))
    result = result + n
print('%.1f'%result)

输出:

Enter a value: 1.1
Enter a value: 1.1
Enter a value: 1.1
3.3

decimal模块:

尝试这个:

from decimal import Decimal
result = 0
for i in range(3):
    n = Decimal(input("Enter a value: "))
    result = result + n
print(result)

输出:

Enter a value: 2.1
Enter a value: 2.1
Enter a value: 2.1
6.3

推荐阅读