Python 2.7 如何在Python中正确添加浮点数?

Python 2.7 如何在Python中正确添加浮点数?,python-2.7,floating-point,Python 2.7,Floating Point,我试图将0.2值添加到常量x中,其中x=8在一个运行到100的循环中。下面是代码 x = 8 >>> for i in range(100): ... x += 0.2 ... >>> x 但每次我得到不同的答案和计算总是不正确的。我读过,但应该有办法解决这个问题。我是否可以使用双倍密码(如果存在)?我正在使用Python 2.7 更新: import time x=1386919679 while(1): x+=0.02

我试图将
0.2
值添加到常量
x中,其中x=8
在一个运行到100的循环中。下面是代码

 x = 8
>>> for i in range(100):
...     x += 0.2
...
>>> x
但每次我得到不同的答案和计算总是不正确的。我读过,但应该有办法解决这个问题。我是否可以使用双倍密码(如果存在)?我正在使用Python 2.7

更新:

  import time
x=1386919679

while(1):

        x+=0.02
        print "xx %0.9f"%x
        b= round (x,2)
        print "bb %0.9f"%b

        time.sleep(1)
输出

xx 1386933518.586801529
bb 1386933518.589999914
xx 1386933518.606801510
bb 1386933518.609999895
xx 1386933518.626801491
bb 1386933518.630000114
所需输出
我想要正确的输出,我知道只要写
print x
就可以了。但我的应用程序要求打印精度为9的结果。我是新手,所以请善待我

当然可以使用双精度浮点。默认情况下,您已经在使用它

至于解决办法:
x+=0.2*100

我知道这听起来很简单,但解决浮点不精确的方法不是设置
浮点\u increcision=False
。这是表示的一个基本限制,没有一般的解决方案,只有具体的解决方案(以及适用于特定情况组的模式)


还有一种有理数类型可以准确地存储
0.2
,但对于大多数实际用例来说,它不值得考虑。

你能告诉我你希望
sum
做什么吗?另外,我想知道你是否真的对浮点精度或你的代码有问题?你能给出一个你期望的结果和你得到的各种不同的、不正确的结果的具体例子吗?这个问题和其中的代码对于预期的结果是不清楚的。你在期待什么?提供的代码将“正确”计算8+0.2*100,这不是故意的吗?@kobejohn抱歉,我刚才在这里复制错了。我只是想看看增加了什么。@AhmedDurrani如果你想要一个好的答案,请准确地提供你期望的结果和你得到的结果。“以9精度打印结果”是指有9个有效数字,还是小数点后有9个小数位?使用double的良好实践可以实现九个有效数字。小数点后9位,前10位需要总共19位有效数字,这需要不同的数据类型。