【问题标题】:Any way so integers are classed as integers with no .0 and floats classed as floats?有什么办法可以将整数归类为没有 .0 的整数并将浮点数归类为浮点数?
【发布时间】:2014-03-01 16:13:44
【问题描述】:

所以。在我的程序中,我有一部分检查除法和的结果是否为整数。例如,6 / 3 = 2(真)或7 / 3 = 1.66(假)。问题是,当我进行像6 / 3 这样的除法时,应该是整数的结果被归类为浮点数,因为它输出为2.0 而不是2。有什么办法可以将十进制/浮点答案归类为带小数点的浮点数,而整数答案归类为整数? (最后没有.0的数字)

我现在有这个:

6 / 3 = 2.0 (float)    
7 / 3 = 1.66 (float)

我想要这个:

6 / 3 = 2 (integer)    
7 / 3 = 1.66 (float)

【问题讨论】:

  • Python 2 还是 3?除法在它们中的行为不同。
  • 我使用的是 Python 3.3.0

标签: python python-3.x integer decimal division


【解决方案1】:

只需使用float.is_integer()

例如,用OP表示:

>>> num1 = 6 / 3  # 2.0
>>> num1.is_integer()
True
>>> num2 = 7 / 3  # 2.33
>>> num2.is_integer()
False

这里不需要任何复杂的东西——在你的函数中实现它应该很容易。

【讨论】:

  • @DylanJ 在这种情况下,您应该接受答案,以便让其他用户知道您的问题已解决。也非常感谢您的支持。
  • 我不明白你对我的deleted 答案@AlexThornton 的问题。我的回答是正确的,只是语法不正确(我在删除之前修复了它)。 OP 询问如何检测除法结果何时导致没有余数的整数。我认为你呼吁人们将我的答案标记为删除是不必要的。
  • @DylanJ 您可以通过单击投票计数下方的勾号将答案标记为已接受。一旦您接受,它将变为绿色。
【解决方案2】:

7 / 3 * 3 = 7 吗?

return ((n1 // n2 * n2) == n1)

【讨论】:

  • 这仅在/ 是整数除法时有效,它在 Python 3 中不适用。
  • 你是对的,@jwodder。在 python3 中你必须使用//。您还需要将表达式封装在括号中以使其实际工作。我确定了我的答案。我用手机用错误的语法回答。也许我以后会避免这样做。
猜你喜欢
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2021-05-14
  • 2011-04-16
  • 2020-11-26
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多