linux C 下定义float 52.1 输出怎么是52.099999
答案:4 悬赏:20 手机版
解决时间 2021-01-25 13:21
- 提问者网友:感性作祟
- 2021-01-25 08:21
linux C 下定义float 52.1 输出怎么是52.099999
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-01-25 09:46
很正常,这和浮点数在计算机中的表示有关!
浮点数在计算机中是采用二进制科学计数法存储的。
一、浮点数转换成二进制
52.1=110100.0001100110011(小数部分不能完全转换)
二、表示成二进制科学计数法
1.101000001100110011 * 2^5
三、按IEEE754进行数据存储
因此,再将内存中的数据转换成十进制输出来的数据不是完整的52.1,只是非常接近它。
浮点数在计算机中是采用二进制科学计数法存储的。
一、浮点数转换成二进制
52.1=110100.0001100110011(小数部分不能完全转换)
二、表示成二进制科学计数法
1.101000001100110011 * 2^5
三、按IEEE754进行数据存储
因此,再将内存中的数据转换成十进制输出来的数据不是完整的52.1,只是非常接近它。
全部回答
- 1楼网友:毛毛
- 2021-01-25 11:58
代码呢?追问加了
- 2楼网友:不如潦草
- 2021-01-25 11:44
float a=52.1;
printf("%.1f",a);
printf("%.1f",a);
- 3楼网友:拾荒鲤
- 2021-01-25 11:11
float a=52.1;
printf(".1f",a);追问不加保留小数 这个跟内存 或者 存储方式有干什么关系呢
printf(".1f",a);追问不加保留小数 这个跟内存 或者 存储方式有干什么关系呢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯