float+f=2.39;+long+a=235;+printf("%lf,%f",f,a);是对的吗?
1个回答
关注
展开全部
咨询记录 · 回答于2022-12-21
float+f=2.39;+long+a=235;+printf("%lf,%f",f,a);是对的吗?
float+f=2.39;+long+a=235;+printf("%lf,%f",f,a);是错的。数字在计算机中是以二进制形式表示的 123456.789 也不例外,在这里为叙述方便滤去整数部分,只讨论小数部分,我在这里粗略的算了一下,0.789 的十进制对应的二进制是 0.11001000111111......(这里无限循环下去),当计算机里的二进制数转换成十进制数的时候便会有误差(因为二进制形式的位数太多,便会截断掉多余的小数位数(准确的说是装不下的部分))。如果不嫌麻烦的话,亲可以自己先把小数部分转换成二进制,然后再转换成十进制,看看效果,这样会印象深刻些