如何将浮点数分类为整数?
a = int(input("Geef de a waarde van de vergelijking: "))
b = int(input("Geef de b waarde van de vergelijking: "))
if a == 0 and b != 0:
print("Er is geen gehele oplossing.")
elif a == 0 and b == 0:
print("Er zijn meerdere gehele oplossingen.")
elif a != 0 and b == 0:
print("De gehele oplossing is x = 0.")
elif (b/a) != 0 and type(b/a) == int:
print("De gehele oplossing is x = " + str(b/a) + ".")
elif (b/a) != 0 and type(b/a) != int:
print("Er is geen gehele oplossing.")
我需要做一个公式 y = ax + b,并且想知道这个函数在哪些点是零。我的问题出在最后两个 elif 条件上。当我设置 a = 6 和 b = -54 时,它会按照最后一个 elif 的条件来计算:也就是 (b/a) != 0 并且 type(b/a) != int。其实当你计算 -54/6 的时候,结果是 -9。感觉程序不把负数当作整数来处理。我在使用 dodona 的时候发现,只有那些被判断为 elif (b/a) != 0 并且 type(b/a) == int 的条件是错误的。我知道当你进行除法运算时,结果会自动变成浮点数类型。但我不知道还有什么其他方法可以把这两者区分开来。
另外,最后一个 elif 的输出是“没有整数结果”。而前一个 elif 的输出是“整数结果是 x = (b/a)”。
我尝试用浮点数类型来处理,但我不知道怎么把它分类为整数,即使它是浮点数。
2 个回答
0
使用 %
运算符来检查余数。如果是浮点数,余数会是非零的。你需要像下面这样更新代码。(之前的 if/elif
已经检查过 0
,所以不需要再检查 (b/a) != 0
了。)
elif b % a == 0:
print("De gehele oplossing is x = " + str(b/a) + ".")
elif b % a != 0:
print("Er is geen gehele oplossing.")
0
正如评论中提到的,Python中的除法运算符 /
总是会返回一个浮点数的结果;比如说 54/6 = 9.0
。
为了让倒数第二个 elif
按照你的想法工作,你可以检查除法的余数是否为 0
,因为如果余数是0,那么除法的结果就是一个整数。
Python中的 取模运算符 %
就是用来做这个的,所以你可以使用:
elif (b/a) != 0 and b % a == 0:
而不是
elif (b/a) != 0 and type(b/a) == int: