在这个问题上还没有找到任何东西,如果有人已经问过这个问题,那就对不起。
我试图将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()
我是不是在考虑显而易见的事情,还是不能做这样的事情?
感谢您的帮助。
答案 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()