float a=32.7; printf("%3.2f",a);为什么执行结果是32.70 换成printf("%3f",a);结果是32.700001
答案:2 悬赏:70 手机版
解决时间 2021-02-12 13:43
- 提问者网友:沉默菋噵
- 2021-02-11 20:56
float a=32.7; printf("%3.2f",a);为什么执行结果是32.70 换成printf("%3f",a);结果是32.700001
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-02-11 21:30
其实这个和不同的编译器有很大关系。
在计算机中,数值是以其补码形式存放的,也就是先将32.7转为其补码,再存放。
输出时,再将其补码转为要显示的形式,比如输出字符,输出十进制,十六进制形式等。
在这个转换的过程中,就会出现这样的问题。
在计算机中,数值是以其补码形式存放的,也就是先将32.7转为其补码,再存放。
输出时,再将其补码转为要显示的形式,比如输出字符,输出十进制,十六进制形式等。
在这个转换的过程中,就会出现这样的问题。
全部回答
- 1楼网友:玩世
- 2021-02-11 21:55
因为小数转换成二进制数时,不一定能完全的与原来的十进制数一样,像0.7这数转换成二进制数是无穷的,所以根据精度要求,若精度要求越大,与原来的数差距越大 ,只能得到一个近似值
再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯