计算浮点数以查找Python中的整数

时间:2018-07-27 15:03:35

标签: python

在这个问题上还没有找到任何东西,如果有人已经问过这个问题,那就对不起。

我试图将X值除以Y值,直到得到一个整数(而不是浮点数),但它一直显示X.0(浮点数)而不是X(整数)。我不能简单地将X转换为带有int(x)的整数,因为那样会违背此目的。

例如,我完成了369/3,这将是123,这是一个整数...但是它将其显示为浮点数(123.0),所以这意味着我需要检查小数点后的数字是否较少等于或等于0?另外我该怎么做?代码在下面

import time
x = int(369)
y = int(3)

def Calculation():
  global x
  global y
  x = x / y #keep divinding x by y until a whole integer is found
  print(x) 
  while isinstance(x,float): 
    time.sleep(0.1) #small delay to prevent crashes
    Calculation()

Calculation()

我是不是在考虑显而易见的事情,还是不能做这样的事情?

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

使用模数%运算符。如果为0,则表示没有余数,因此为整数。尝试以下代码

import time
x = int(369)
y = int(3)

def Calculation():
  global x
  global y
  x = x / y #keep divinding x by y until a whole integer is found
  if(x%y == 0):
      print("it is an integer!")

  else: 
    time.sleep(0.1) #small delay to prevent crashes
    Calculation()

Calculation()

答案 1 :(得分:0)

首先,如果除数是整数,则将非整数除以整数将永远不会导致整数(除非我们遇到舍入错误并最终得到零的答案)。通常,几次递归后,此问题都会出现舍入错误。

如果您使用的是python 3,则可以将整数除法(即//)与浮动除法结果(即/)进行比较。

x = x/y
int_div = x//y
print(x)
if(x != int_div):
    time.sleep(0.1)
    Calculation(x)

答案 2 :(得分:0)

如果您所困惑的只是查找除数的商是否为int并在达到int后停止迭代,请使用is_integer()函数。

>>> a = 369
>>> b = 3
>>> a/b
123.0
>>> (a/b).is_integer()
True

这是您想要的吗?

答案 3 :(得分:-1)

一种类型将保留为特定类型,直到您对其进行更改。 因此,您的循环每次都会求值相同。

您可以采用其他方法,例如检查

if int(x/y) == x/y: print(x,y)
else: 
    x=x/y
    Calculation()