3

数字が .0 で終わるかどうかのテストを実行しようとしています

数桁離れたプログラムを実行しているため、特定の桁数を見積もることができません。特定の数値が除外されるため、 % の使用も機能しません。このプログラムの数値はすべて浮動小数点数であるため、.00000000000001232 ではなく、.0 で終わるかどうか、または正確に .0 で終わる必要があるものかどうかを確認する方法が必要です。

ラウンド関数の問題は、数桁の数値を扱っていることです。の後に小数点以下が 1 つしかないかどうかをチェックするものが必要です。または、その小数が0かどうかをチェックするもの。

コード:

from myro import *
from math import *


def main():

    z = 3
    a = 2
    b = 2
    x = 3
    y = 2 #starts at y = 3

    lim = 25

    c = (a**x + b**y)**(1.0/z)

    resultnum = 0    

    while z <= lim:

        while a <= lim:

            while b <= lim:

                while x <= lim:

                    while y <= lim:

                        y = y + 1
                        c = (a**x + b**y)**(1.0/z)

                        if float(int(c) + 1) != round(c, 6):
                            pass
                        else:
                            print str(a) + "^" + str(x) + " + " + str(b) + "^" + str(y) + " = " + str(int(c)+1) + "^" + str(z)
                            resultnum = resultnum + 1
                            print c

                    y = 3
                    x = x + 1

                x = 3
                b = b + 1

            b = 3
            a = a + 1

        a = 3
        z = z + 1
        print z

    print "code cycle complete"
    print str(resultnum) + " results"


main()
4

4 に答える 4

0

別の方法を示すために、「.」でいつでも分割できます。

>>> num = 12.023
>>> str(num).split('.')[1] == '0'
False
>>> num = 12.0
>>> str(num).split('.')[1] == '0'
True

すべてが浮動小数点であると言ったので、これが機能することに注意してください。これにより、エラーnumが int であることが示されます

于 2013-06-08T02:15:58.783 に答える