Python简单的浮点除法:不准确

问题描述:

所以我对编程非常陌生,但我正在研究一个简单的计算器。 当我启动程序并尝试了部分(尝试将2除以5)时,输出为3.0。这两个数字是花车,所以我不明白为什么这不起作用。其次,乘法也给出了错误的答案。Python简单的浮点除法:不准确

from math import * 

while True: 

print("Options:") 
print("Enter 'add' to add two numbers") 
print("Enter 'subtract' or '-' to subtract two numbers") 
print("Enter 'multiply' to multiply two numbers") 
print("Enter 'divide' to divide two numbers") 
print("Enter 'quit' to end the program") 
user_input = input(": ") 

if user_input == "quit": 
    print ("Calculator stopped.") 
    break 
elif user_input == "subtract" or "-": 
    num1 = float(input("num1: ")) 
    num2 = float(input("num1: ")) 
    print(num1 - num2) 
elif user_input == "multiply" or "*": 
    num1 = float(input("num1: ")) 
    num2 = float(input("num1: ")) 
    print(">> ", num1 * num2," <<") 
elif user_input == "divide" or "/": 
    num1 = float(input("num1: ")) 
    num2 = float(input("num1: ")) 
    sum = num1/num2 
    print(str(float(num1)/num2)) 
else: 
    print("Unknown command") 

顺便说一句我使用Python 3.6.1。

+0

乘法给出错误的答案以及.. –

这不会做你认为:

elif user_input == "subtract" or "-": 

它的工作原理就好像是分组如下:

elif (user_input == "subtract") or "-": 

不管user_input的价值,这种情况将评估为True (因为"-"是非空的,因此为真)并且将执行减法。

(试图除以2 5),输出为3.0

这是因为5减去2为3的代码中减去。

你想要更多的东西一样:

from math import * 

while True: 

    print("Options:") 
    print("Enter 'subtract' or '-' to subtract two numbers") 
    print("Enter 'multiply' to multiply two numbers") 
    print("Enter 'divide' to divide two numbers") 
    print("Enter 'quit' to end the program") 
    user_input = input(": ") 

    if user_input == "quit": 
     print ("Calculator stopped.") 
     break 
    elif user_input in ("subtract", "-"): 
     num1 = float(input("num1: ")) 
     num2 = float(input("num1: ")) 
     print(num1 - num2) 
    elif user_input in ("multiply", "*"): 
     num1 = float(input("num1: ")) 
     num2 = float(input("num1: ")) 
     print(">> ", num1 * num2," <<") 
    elif user_input in ("divide", "/"): 
     num1 = float(input("num1: ")) 
     num2 = float(input("num1: ")) 
     print(num1/num2) 
    else: 
     print("Unknown command") 
+1

更正代码,它的运行完美!感谢您的快速帮助! –