python浮点数运算问题

img


为什么结果输出是2.220446049250313e-16?不应该是0吗?如果不用整除的方法应该怎么检测这个运算结果浮点数值是不是x.00?

判断是不是.00,这样可以先转化为字符串:

num = 3.06-2.05-0.01
if str(num)[:-3] == '.00':
    print('是.00')
else:
    print('不是.00')

任何整数%1都是0
浮点数不要做取余运算!
你想判断一个浮点数的小数位是不是0,那就把它转int再跟自身比较,相等那么就表示小数位完全是0
但是浮点数有误差,所以这样比较八成是不相等,所以你需要把两个值相减取绝对值,然后判断是否差值<1e-6

img

整数和1取余数的话永远是0
而 小数和1取余数就是小数点后面的数字, 例如如图 0.07 无限接近 0.07,
这是精度的问题,不光python语言有
有关精度参考博客
https://blog.csdn.net/qq_32727095/article/details/118106061