Python求解答!为什么输出结果是这样

第一个为什么b不是2.0,为什么有这么多位小数?是类型转换的问题还是啥?

img

img

img

img

【有帮助请采纳】

python中浮点类型的数字在计算机中小数点后有16位,所以输出小数点后16位
可以用占位符%.Nf(其中N为保留的小数点位数)解决该问题

【有帮助请采纳】

这是浮点数在内存中以补码形式保存,显示出来有精度损失

你可以百度一下精度损失https://www.baidu.com/baidu?ie=UTF-8&word=%E7%B2%BE%E5%BA%A6%E6%8D%9F%E5%A4%B1

这是计算机的问题。计算机只能用二进制表示小数,0.5就是2的-1次方,0.25就是2的-2次方这样,所以很多小数没有办法用二进制表示,只能显示无限循环了。