永发信息网

为什么float a=123456.789;printf("%f",a)的结果却是123456.789063

答案:3  悬赏:70  手机版
解决时间 2021-03-31 08:40
  • 提问者网友:寂寞撕碎了回忆
  • 2021-03-30 23:37
为什么float a=123456.789;printf("%f",a)的结果却是123456.789063
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-03-31 00:33
额。。。
看了楼上几位的回答,貌似都没有说到重点
那。。。我就来多说两句

首先我要说明的是, 数字在计算机中是以二进制形式表示的

当然你的 123456.789 也不例外,在这里为叙述方便滤去整数部分,只讨论小数
部分,我在这里粗略的算了一下,0.789 的十进制对应的二进制是 0.11001000111111......(这里无限循环下去),当计算机里的二进制数转换成十进制数的时候便会有误差(因为二进制形式的位数太多,便会截断掉多余的小数位数(准确的说是装不下的部分))。

如果不嫌麻烦的话,楼主可以自己先把小数部分转换成二进制,然后再转换成十进制,看看效果,这样会印象深刻些
全部回答
  • 1楼网友:荒野風
  • 2021-03-31 01:23
输出精度的问题,可以写printf("%6.3f", a);
其中小数点前的6表示6个整数位,如果数据大于6位则按实际输出,小数点后的3表示输出3位小数
  • 2楼网友:白昼之月
  • 2021-03-31 00:40
printf是C语言里的一个标准函数,组织格式输出
在你这个问题里面,你用的是"%f"这个参数,作用是作为整数输出,结果当然是..........
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯