Python:与“不可能分割”错误有关

时间:2014-06-09 04:26:07

标签: python

decimal.InvalidOperation:[]

上面的错误出现在以下代码的第15行(它是带有while语句的行):

from decimal import *    
accuracy = 60    
getcontext().prec = accuracy


def function():
    for element in range(1, 50):
        var_a = Decimal(1) / Decimal(element)
        count = 1
        if round(var_a, accuracy - 10) == var_a:
            print((element, 0))
            continue
        while (var_a * (10**count)) - ((var_a * (10**count)) % 1) != int:
            count += 1
        print((element, count))

function()

我正在尝试编写代码以找出给定范围的分数的循环周期有多长(例如,1/6是0.16666,并且具有1位循环周期,而1/11是0.090909090909 .. 。并且有一个2位数的循环周期。)

我真的不知道错误的含义或我能做些什么。

感谢您的帮助。

编辑:对于BrenBarn,

文件“C:/ Users / Louie McConnell / PycharmProjects / Prime Stuff / reciprocal cycles.py”,第15行,函数

while (var_a * (10**count)) - ((var_a * (10**count)) % 1) != int:

decimal.InvalidOperation:[class'minit.DivisionImpossible']

1 个答案:

答案 0 :(得分:1)

使用:

def is_integral(d): 
    return d.to_integral() == d

in

while not is_integral(var_a * (10**count)) - ((var_a * (10**count)) % 1):