在创建两个数字的排列时,缺少一些结果,即它们的和是偶数

时间:2016-10-27 09:55:19

标签: python algorithm

我有一个奇怪的问题,当我想创建两个数字的总和是两个数的偶数时,结果会丢失。我使用的是python 2.6.6。

我的脚本是:

import os
import sys
import math

for i in range(1,39):
    a = -2.2 - 0.2*i
    for j in range(i,39):
        b = -2.2 - 0.2*j
        if (a+b) % 2 == 0:
            print str(a) + " : " +  str(b)

我认为这个脚本应该给我想要的结果。但是,我发现有一些缺失的排列,如-3.4:-8.6。 我无法在脚本中找到我遇到此问题的原因。 请帮我解决这个问题。非常感谢你。

1 个答案:

答案 0 :(得分:1)

作为评论中指出的deceze,内置浮点表示不能精确地表示所有十进制数,这可能会导致一些问题(如您所见)。

如果你需要数学来完全按照你期望的方式计算,我会使用十进制模块。

https://docs.python.org/2/library/decimal.html