c语言精确小数位数会怎样舍去后面的小数
代码main(){printf("\n%.2f",3.155);}结果显示3.15,将3.155换成3.156结果显示3.16以上说明舍去后面的小数时既不是直接舍弃,又...
代码
main()
{
printf("\n%.2f",3.155);
}
结果显示 3.15,
将3.155换成3.156
结果显示3.16
以上说明舍去后面的小数时既不是直接舍弃,又不是四舍五入,(我们老师也说过,精确位数并不会改变本身的值)那它是如何得到这个结果的? 展开
main()
{
printf("\n%.2f",3.155);
}
结果显示 3.15,
将3.155换成3.156
结果显示3.16
以上说明舍去后面的小数时既不是直接舍弃,又不是四舍五入,(我们老师也说过,精确位数并不会改变本身的值)那它是如何得到这个结果的? 展开
4个回答
展开全部
1、正数x四舍五入的技巧:
doublex;
x=(int)(x+0.5);
2、举例:若正数要依舍去法精确到小数点後第二位;
例如6.2367–>(int)(623.67)/100.0=623/100.0=6.23
doublex;
x=(int)(x*100)/100.0;//注意是除以100.0;
3、举例:若正数要四舍五入精确到小数点後第二位,即x*100四舍五入再除以100;
x=(int)(x*100+0.5)/100.0;
扩展资料
C语言保留小数点后一位
例:
#include<stdio.h>
voidmain()
{
floata=1,b=2,c;//先定义一个实型数据
c=a/b;
printf("%.1f\n",c);//重点在于%.1f
}
展开全部
追问
可能我说的还不够明白,3.155会显示3.15,说明精确时不是按照四舍五入来的,我想问的是,为何会显示这样的结果,编译器遵循怎样的规则
追答
出现这种情况的原因是——浮点数也采用二进制编码,输出时要转为十进制,具体你可以查浮点数编码规范IEEE754
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言用%m.nf输出浮点数时,会从n+1位小数位进行四舍五入。
如:
printf("%5.2f\n", 3.567 ); //输出 3.57,前面有一个空格,补齐五个字符宽度。
但,由于浮点数是不精确的数据,与实际准确数是有误差的,四舍五入也会出现差异,如:
float f=3.155;
printf("%f\n", f ); //默认小数位6位,第七位四舍五入:3.155000
printf("%.10f\n", f ); //输出:3.1549999714
//参考以上代码说明,理解以下输出
printf("%.2f\n", f ); //3.15
printf("%.3f\n", f ); //3.155
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询