C语言中,float类型如何存储小数点后六位数字? 第六位数字是否会四舍五入?

 2024-01-16 02:04:40  阅读 0

上面的两个结果你是不是写反了? -- 这里涉及到两个精度问题,即指定的精度,以及类似float、sum的c数据的精度。

printf("%f\n",x);

%f,未指定精度(位数),c默认为新颖点后6位,因此被截断(四舍五入)

printf("%.12lf\n",x);

这里指定精度为小数点后12位,因此输出为12位; 但之所以和原来的赋值不一样,是因为x的类型是float,而不是float。 float本身的精度不如float。 这个话题由来已久,涉及到小数在计算机中的存储方式。 简单来说,十进制的小数部分是按照1/2+1/4+1/8+....的方式来近似的,因此存在误差,也就是所谓的{存储精度}问题。

float,浮点数的32位表达为:0~22位=尾数; 23~30为指数位,31位为重合位。

float保留6位输出出错_printf输出保留一位小数_输出保留两位

浮动 x = 1.=

x = 1. =

由于y本身是(64位存储,尾数用52位表示,由11位指数位和1位符号位组成),所以计算机的存储精度必须很高。

y=9。 =

y=9。 =

因此,如果可能的话,请使用它。

标签: 精度 小数 存储

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码