C语言如何对一个小于1的正数保留小数点后面的位数,在强制类型转换中办不到。
假如说a=(int)((b*1000+0.5)/1000).我是想不经过输出函数,让b保留小数点后三位。假如说b=0.0947的时候凭肉眼我们都知道保留小数点后三位后是0...
假如说a=(int)((b*1000+0.5)/1000). 我是想不经过输出函数,让b保留小数点后三位。假如说b=0.0947的时候 凭肉眼我们都知道保留小数点后三位后是0.095 但是经过强制类型转换后变为零了。我该如何做才能得到前面的那一种结果。跪求大神指点。
展开
4个回答
展开全部
首先将b乘以10000(or more)到全是整数
然后在经过一系列的处理!
达到你想要的进位的效果!
楼下的那个格式输出%.3lf
如果用你的b=0.0947
保留三位小数输出的是0.094
做不到进位!
然后在经过一系列的处理!
达到你想要的进位的效果!
楼下的那个格式输出%.3lf
如果用你的b=0.0947
保留三位小数输出的是0.094
做不到进位!
追问
比如说b乘以100000+0.5=9470.5 然后再除以100000=0.094705 依旧是一个很小的数 强制转换时依旧还是零啊
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出的时候%.3f格式 不要落字符
追问
我要的是不通过输出函数来做到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
float b ;
scanf("%f",&b);
int a = 0;
if ((int)(b*10000)%10 >= 5) {
a =(int)((b*10000/10)+1);
}
printf("%d\n",a);
输出:
0.0947
95
Program ended with exit code: 0
你要把a做中间量用 就a/1000 目前我理解的就这样了
scanf("%f",&b);
int a = 0;
if ((int)(b*10000)%10 >= 5) {
a =(int)((b*10000/10)+1);
}
printf("%d\n",a);
输出:
0.0947
95
Program ended with exit code: 0
你要把a做中间量用 就a/1000 目前我理解的就这样了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询