c语言四舍五入,保留两位小数输出结果不对

亚林瓜子 2011-07-16 04:22:28

#include <stdio.h>
int main()
{
double a=123.4567;
int b;
a*=100;
a+=0.5;
b=(int)a; /*到这步上面结果均正确*/
a=b/100; /*这步一除回100,输出结果就变成了123.000000*/
printf("四舍五入结果:%lf\n",a);
return 0;
}
...全文
1411 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunshine8225 2012-01-03
  • 打赏
  • 举报
回复
b换成double或者float类型,printf("四舍五入结果:%lf\n",a);处%lf\n换成%.2f\n就好了,保留小数点后两位
szqh97 2011-07-16
  • 打赏
  • 举报
回复
int main()
{
double a=123.4567;
int b;
a*=100;
a+=0.5;
b=(int)a; /*到这步上面结果均正确*/
cout << b <<endl;
a=b/100.0; /*这步一除回100,输出结果就变成了123.000000*/
printf("四舍五入结果:%6.2f\n",a);
return 0;
}

printf("四舍五入结果:%6.2f\n",a);
亚林瓜子 2011-07-16
  • 打赏
  • 举报
回复
谢谢,两位的回答,问题已经解决了
szqh97 2011-07-16
  • 打赏
  • 举报
回复
int main()
{
double a=123.4567;
int b;
a*=100;
a+=0.5;
b=(int)a; /*到这步上面结果均正确*/
//a=b/100; //b此时为12346为int类型,b/100的结果是123
a=b/100.0;
printf("四舍五入结果:%lf\n",a);
return 0;
}
wtbike 2011-07-16
  • 打赏
  • 举报
回复
b=(int)a; /*到这步上面结果均正确*/
a=b/100; /*这步一除回100,输出结果就变成了123.000000*/

上面b的是int型的,“100”也是int型的,所以b/100的结果也会是int型。int型的结果再赋值给a,所以结果有问题。

我是这么理解的。
至善者善之敌 2011-07-16
  • 打赏
  • 举报
回复

a=(double)b/100; /*这步一除回100,输出结果就变成了123.000000*/

加(double) 因为b是整数

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧