如何将浮点数判定为整数?Python线性方程求解问题求助
解决线性方程y=ax+b整数零点判定问题
你的代码核心问题是:Python 3里用/做除法,哪怕两个整数相除结果是整数,返回的也是float类型(比如-54/6得到-9.0,类型是float),所以用type(b/a) == int永远不可能成立,导致正确的整数解被误判。
下面给两种可靠的解决思路:
方法一:用整数取模运算(推荐)
直接判断b是否能被a整除,用取模运算符%,如果b % a == 0,说明商是整数。这种方法全程用整数运算,没有浮点数精度问题,最可靠。
修正后的完整代码:
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: # 用//做整数除法得到精确的整数结果 print(f"De gehele oplossing is x = {b // a}.") else: print("Er is geen gehele oplossing.")
方法二:判断浮点数是否为整数
如果坚持用除法结果判断,可以调用浮点数的is_integer()方法,它会检查当前浮点数是否是整数形式(比如-9.0.is_integer()返回True)。
对应的代码修改:
把原来的elif (b/a) != 0 and type(b/a) == int:改成elif (b/a).is_integer():,后续分支也可以简化:
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).is_integer(): # 转成int输出,避免显示成-9.0 print(f"De gehele oplossing is x = {int(b/a)}.") else: print("Er is geen gehele oplossing.")
注意:方法二更适合简单场景,但如果涉及极大整数,浮点数可能会丢失精度,所以优先推荐方法一。
内容的提问来源于stack exchange,提问作者Ray81194
相关产品推荐
相关产品推荐

