python运算符计算

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")

img


其余都没毛病,唯独计算0.1✘3.0=0.3一直输出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

img

浮点数在计算机里是以二进制存储的,所以像0.3这样的数,存成二进制后是除不尽的,会有误差
解决办法:
1.可以用decimal之类的无误差的类型来计算
2.可以先把两个输入都乘以10倍,转int,计算完再除以100
3.输出前用round保留到小数点后2位以消除误差
4.相减取绝对值,然后判断差是否在合理范围内

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632