【问题标题】:How to differentiate int in float form? [duplicate]如何区分浮点形式的int? [复制]
【发布时间】:2019-06-20 00:51:11
【问题描述】:

我正在做一个项目,但是这里解释项目太难了,所以我在这里举一个更简单的例子。就像我告诉 python 一样:

 n = 1999.0

但是 python 不知道 n 是一个整数。那么如何告诉python“n是一个整数”呢?

注意:我不能使用 int() 方法。再举一个例子:

>>> # A code to calculate the sum of all integers below 100 that can be divided by 7.
>>> n = 0
>>> for i in range(1,101):
    if i / 7 == int(): # if it is a integer after being divided by 7
        n += i
>>> print(n)
0

我问的是如何告诉python这个数字虽然是float形式,但它是一个整数,不是其他解决这个问题的方法,所以请不要误解这个问题。谢谢你的帮助。 :)

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    要检查一个浮点数是否是一个整数,有几种方法,你可以使用整数除法并检查两个除法是否相等,或者取 %1 并检查它是否为 0:

    n=0
    for i in range(1,101):
        if i / 7 == i // 7: # Compute division two times, one in float, the other in int
            n += i
    print(n)
    

    n=0
    for i in range(1,101):
        if i / 7 % 1 == 0: # Compute the decimals and check if it is null
            n += i
    print(n)
    

    都打印 735

    正如 Sam Mason 所建议的,计算所有可除以 7 的数字之和的最佳方法是测试 if i%7 == 0

    【讨论】:

    • 为什么第二个版本不是i % 7 == 0?对我来说似乎更直观……
    • @SamMason 你是完全正确的,对于 for 循环来说,这更好,但问题是如何检查一个数字是浮点数还是整数,而不是它是否可以被分割7点! (我会更新我的答案以包含您的评论)
    • @SamMason 我刚刚注意到 OP 要求不要显示解决问题的另一种方法,而只是检查它是否是整数
    • 鉴于 OP 可能正在学习编程,我通常认为最好说“你问错了问题”。即“除法然后询问余数是否为整数”是我们作为人类会做的事情,但对于计算机来说,通常最好“计算除法后的余数,并检查是否为零”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    相关资源
    最近更新 更多