c语言,输出保留几位小数

我举个例,比如保留4位小数,不用printf("%.4f")这个方法。。怎么让输出的double型保留4位小数。。。(int)(y*10000+0.5)/10000.0这... 我举个例,比如保留4位小数,不用printf("%.4f")这个方法。。怎么让输出的double型保留4位小数。。。(int)(y*10000+0.5)/10000.0这个怎么编进c语言? 展开
 我来答
金色潜鸟
推荐于2017-09-12 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5507万
展开全部
最简单的是 printf("%.4f")。

现在我们来舍近求远:
(1) 用字符串存放double型定点小数 数据,找到小数点位置,把小数点后第5位 置 字符串 结束符,输出 字符串。
(2) 另一种,用 %g 格式,但它不一定 始终 有效。

#include<stdio.h>
#include<stdlib.h>
main(){
double y=7.654321;
char str[30];
int i,n;
// try 1
sprintf(str,"%.15lf",y);
for (i=0;i<strlen(str);i++) if (str[i]=='.') {n=i;break;}
str[i+5]='\0';
printf("%s\n",str);

//try 2
y = ((int)(y*10000+0.5))/10000.0;
sprintf(str,"%g",y); // 用字符串
printf("%s\n",str);
printf("%g",y); // 直接输出
return 0;
}

输出:
7.6543
7.6543
7.6543
cdyzxy
2013-10-09 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3567万
展开全部
整型数这样乘以10000很容易溢出的,建议:
double x=1234.567890123;
long int y,yy;
y=(int)x;
x-=y;
x*=10000;
x+=0.5;
yy=(int)x;
x=yy;
x/=10000;
x+=y;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
roo_zhou
2013-10-09 · 超过12用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:25.5万
展开全部
不知道你可以用什么办法输出,不能用printf的话也可以自己写个循环逐字输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式