永发信息网

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

答案:3  悬赏:70  手机版
解决时间 2021-03-31 08:40
为什么float a=123456.789;printf("%f",a)的结果却是123456.789063
最佳答案
额。。。
看了楼上几位的回答,貌似都没有说到重点
那。。。我就来多说两句

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

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

如果不嫌麻烦的话,楼主可以自己先把小数部分转换成二进制,然后再转换成十进制,看看效果,这样会印象深刻些
全部回答
输出精度的问题,可以写printf("%6.3f", a);
其中小数点前的6表示6个整数位,如果数据大于6位则按实际输出,小数点后的3表示输出3位小数
printf是C语言里的一个标准函数,组织格式输出
在你这个问题里面,你用的是"%f"这个参数,作用是作为整数输出,结果当然是..........
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
液体珊瑚粮好还是固体珊瑚粮好?
三国杀里面的酒能主动回血吗
无线路由器腾达N300连接电脑成功,可以上QQ,
请问一下为什么是1mol/dm^3
我们班里 的…半命题作文带批注
各位身边有没有很做作的人
追一个喜欢的女生追不到怎么办追了几个月了
宁夏张氏回医正骨研究所怎么去啊,有知道地址
用……,又看见……,又听见……造句
羽化命令和模糊滤镜有什么区别
为什么下载喵喵栽培老是安装好打开就是停止运
微pe里有个安装方法选哪个做win10系统好
驾校属于教育局管吗?
维词的“我的计划”定下了,有谁能坚持下来吗
摩丽卡水龙头为什么半年就开始锈了
推荐资讯
我被别人忽悠做期权被骗怎么找回我的钱
啥人自有啥人爱 破锅自有破锅盖,下一句
找工厂定做工作服好还是不好呢?
与『未成年』所对的情侣网名,,求大神来帮忙
你最大的欲望是什么,具体的,不要说有很多钱
c30混泥土配合比
想在墙上做一个拱形窗 ,请问墙上怎么开成拱
北陶到聊城头一班车几点
38年前10元钱和现在多少钱购买力一样
泰戈尔说:“真理之川从他的错误之沟渠中流过
裳的形近字有哪些
成都火车站能不能进站接送客?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?