浮点检查is_integer值是否按预期工作?

时间:2018-04-15 23:10:46

标签: python python-3.x

所以,我正在尝试在URI Online Judge中完成练习,但是我在检查浮点数是否为整数时遇到了麻烦。这是我的代码:

I = 0.0
J = 1.0

while I <= 2:
    for y in range(3):
        if I.is_integer():
            print("I=%d J=%d" % (I, J))
        else:
            print("I=%.1f J=%.1f" %(I, J))
        J += 1.0
    J -= 2.8
    I += 0.2

嗯,输出工作正常,直到最后一个循环。在前两个循环中,值是整数,它按照预期打印:浮点数,因为它是一个整数。但是在最后一个循环中,我得到一个带有浮点的整数,有什么想法来解决这个问题吗?这是输出:

I=0 J=1 #working fine here
I=0 J=2
I=0 J=3
I=0.2 J=1.2
I=0.2 J=2.2
I=0.2 J=3.2
I=0.4 J=1.4
I=0.4 J=2.4
I=0.4 J=3.4
I=0.6 J=1.6
I=0.6 J=2.6
I=0.6 J=3.6
I=0.8 J=1.8
I=0.8 J=2.8
I=0.8 J=3.8
I=1 J=2 # also works fine here
I=1 J=3
I=1 J=4
I=1.2 J=2.2
I=1.2 J=3.2
I=1.2 J=4.2
I=1.4 J=2.4
I=1.4 J=3.4
I=1.4 J=4.4
I=1.6 J=2.6
I=1.6 J=3.6
I=1.6 J=4.6
I=1.8 J=2.8
I=1.8 J=3.8
I=1.8 J=4.8
I=2.0 J=3.0 # got messed up here
I=2.0 J=4.0
I=2.0 J=5.0

[编辑] - 按预期工作

I = 0.0
J = 1.0

while I <= 2:
    for y in range(3):
        if I.is_integer() or I > 1.9:
            if 1.9 < I < 2.1: # Made some workarounds here
                I += 0.1    
            print("I=%d J=%d" % (I, J))
        else:
            print("I=%.1f J=%.1f" %(I, J))
        J += 1.0
    J -= 2.8
    I += 0.2

0 个答案:

没有答案