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

在Python中计算浮点以查找整数,python,Python,没有找到任何关于这个的信息,如果有人已经问过这个问题,那么很抱歉 我试图将一个X值除以一个Y值,直到得到一个整数而不是一个浮点数,但它一直显示X.0(一个浮点值),而不是X(一个整数)。我不能简单地将X转换为int(X)的整数,因为这样做会破坏本文的目的 比如说,我做了369/3,这将是123,这是一个整数。。。但它显示为浮点(123.0),这是否意味着我需要检查小数点后的数字是否小于或等于0?我该怎么做呢?代码如下 import time x = int(369) y = int(3) de

没有找到任何关于这个的信息,如果有人已经问过这个问题,那么很抱歉

我试图将一个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()
是我想得太多了,还是像这样的事情不能做


感谢您的帮助。

在您更改某个类型之前,该类型将保留为特定类型。 因此,您的循环每次的计算结果都是相同的

您可以采取不同的方法,例如检查

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

首先,如果除数是整数,那么将非整数除以整数永远不会得到整数(除非我们遇到舍入错误并最终得到零的答案)。一般来说,这个问题在几次递归之后会出现舍入错误

如果您使用的是python 3,那么您可以将整数除法(即//)与浮点除法结果(即/)进行比较。类似于……的东西

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

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

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

这就是您想要的吗?

使用模
%
运算符。如果为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()

我真的不明白你在说什么@user3483202,我是Python新手,数学很差,哈哈,我这么做只是为了学习基础。。。浮点(10)/float(5)是什么意思?Python3.x默认情况下不使用整数除法,因此,如果您将10/3除法,您将得到一个浮点值。然后,如果你把这个浮点数除以其他的,你就再也不会得到一个整数了,只有浮点数。我的第一个评论实际上有点误导,因为即使10/2在Python 3So中返回一个浮点,在你进行第一次除法之后,你的
while
条件将始终为真,因此你将陷入无限循环中。这就是我来这里的原因,我想找到一个走出该循环的方法。。。正如我所说,我对Python相当陌生,但我正在努力寻找一种查找小数点后的值的好方法,是否有一种查找小数点后的数字的方法?这样我就可以检查它是否为0并将其转换为整数。为什么不简单地使用
x%y==0
?我的错,我是新来的