a = float(input("Enter the first number: "))
b = float(input("Enter the second number: "))
sum1 = float(input(f"Enter {a} * {b}= "))
sum2 = a*b
if sum1 == sum2:
print("Correct")
else:
print("Incorrect")
都用round保留下小数位再比较就好了
a = round(float(input("Enter the first number: ")))
b = round(float(input("Enter the second number: ")))
sum1 = round(float(input(f"Enter {a} * {b}= ")))
sum2 = a*b
if sum1 == sum2:
print("Correct")
else:
print("Incorrect")
浮点型数据存在精度丢失,用Decimal
from decimal import Decimal
a = float(input("Enter the first number: "))
b = float(input("Enter the second number: "))
sum1 = float(input(f"Enter {a} * {b}= "))
sum2 = Decimal(str(a))*Decimal(str(b))
if sum1 == sum2:
print("Correct")
else:
print("Incorrect")
确实不等于0.3
浮点数在计算机里是以二进制存储的,所以像0.3这样的数,存成二进制后是除不尽的,会有误差
解决办法:
1.可以用decimal之类的无误差的类型来计算
2.可以先把两个输入都乘以10倍,转int,计算完再除以100
3.输出前用round保留到小数点后2位以消除误差
4.相减取绝对值,然后判断差是否在合理范围内