| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9005 人关注过本帖
标题:取两位小数四舍五入
只看楼主 加入收藏
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
结帖率:75%
收藏
 问题点数:0 回复次数:10 
取两位小数四舍五入
取两位小数四舍五入,如输入3.145程序执行后输出3.15
======编译无错误,因该是数据转换问题,导致结果不对
===========================================================================================
#include "stdio.h"
#include "math.h"
main()
{
 double a;
 int b,c,d;
 scanf("%f",&a);
 b=a*1000;
 d=b%10;
 if(d<=4)
 {
  c=a*100;
  printf("%f",c/100);
 }
 else
 {
  c=a*100+1;
  printf("%f",(float)c/100);
 }
}


===========
盼人解答
搜索更多相关主题的帖子: 小数四舍五入 include math double int 
2007-11-24 14:48
hover58
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-30
收藏
得分:0 
用于浮点数输出,小数点前面的数表示浮点数所占的位数(包括小数点),后面的表示精确到小数点第几位.
printf("%12.2lf",x);
2007-11-24 15:01
kidd2005
Rank: 1
等 级:新手上路
帖 子:193
专家分:0
注 册:2007-11-2
收藏
得分:0 
老实说,我也不太清楚错在哪里,我复制了你的再加入自己的思路做了个:
#include "stdio.h"
#include "math.h"
main()
{
float a,c,e;
int b,d;
scanf("%f",&a);
b=a*1000;
d=b%10;
if(d<=4)
{
  c=a*100;
}
else
{
  c=a*100+1;
}
  e=c/100;
  printf("%.2f",e);
}

潜心苦C,却发觉百C不得其解啊~
2007-11-24 15:35
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
收藏
得分:0 
不知道 整型和实型怎么相互赋值的.
奇怪中.int e=1;
  printf("%f",e);
输出0.0000000
float e=1;
  printf("%d",e);
输出0
一个整型数用%f输出的话就是0.000000
实型用%d输出的话就是0
谁可以解释一下?
2007-11-24 15:59
hover58
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-30
收藏
得分:0 
..............这个 是你的转换字符错误...
double是%lf
float是%f
..不信你改了就对了
2007-11-24 16:07
hago
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-11-3
收藏
得分:0 
输入和输出要前后一致的  
前面定义的float 后面输出时就要用%.2f;".2"是指保留两位小数
前面定义的int 后面就要用%d
2007-11-24 16:24
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
收藏
得分:0 
也不是,我直接改double为float也不行.还是那个问题,实型和整型怎么互相输出?
2007-11-24 16:26
hago
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-11-3
收藏
得分:0 
回复 7# 的帖子
double 和float都是一样的 都是浮点型 输出时都用%f的
int定义的才是整型 输出用%d
2007-11-24 16:31
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
收藏
得分:0 
原帖由 [bold][underline]dousao[/underline][/bold] 于 2007-11-24 15:59 发表 [url=http://bbs.][/url]
不知道 整型和实型怎么相互赋值的.
奇怪中.int e=1;
  printf("%f",e);
输出0.0000000
float e=1;
  printf("%d",e);
输出0
一个整型数用%f输出的话就是0.000000
实型用%d输出的话就是0
谁可以解释一下? ...

/*------------------------------------------------------------*/
这好像与printf()这个函数的机制有关
比如printf("%d,%d,%d\n",i,j,k);
这个语句是要打印三个整形数据i,jk.
也就是说printf()函数期待着这三个数据i,j,k是整型的!
但是偏偏如果你的i,j,k不是整形的,那么会产生什么后果呢?
假如i为double型,j为char型,k为整形
计算机首先根据变量的类型(i,j.k)把这些值放在堆栈中.
所以i占8个字节,j占1个字节,k占2个字节(ps:我的机器)
然后printf("%d,%d,%d\n",i,j,k);读取的时候是根据格式转换符读取的
也就是说在堆栈中,首先取2个字节,打印出来,再取2个字节打印出来,还取2个字节打印出来
可是一个i就在对战中占8个字节
当然打印的就非自己期望的值.

在路上走,看见了C,从此爱上了她
2007-11-25 09:46
zglcx123
Rank: 2
等 级:论坛游民
帖 子:60
专家分:10
注 册:2007-7-2
收藏
得分:0 
#include "stdio.h"
#include "math.h"
main()
{
double a;
int b,c,d;
scanf("%lf",&a);
b=a*1000;
d=b%10;
if(d<=4)
{
  c=a*100;
  printf("%.2f\n",(float)c/100);
}
else
{
  c=a*100+1;
  printf("%.2f\n",(float)c/100);
}
return 0;
}

//想4楼说的,,就可以了,对了。我还加了printf("%.2f\n",(float)c/100);  中的float  和%.2f\n
2007-11-25 09:57
快速回复:取两位小数四舍五入
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023025 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved