不显示删除回复 显示所有回复 显示星级回复 显示得分回复 收藏 c语言四舍五入,保留两位小数输出结果不对

smallMage 2012-11-16 03:19:52
int main() {
double a=123.4567;
int b;
a*=100;
a+=0.5;
b=(int)a;
a=b/100.0;
printf("四舍五入结果:%.2f\n",a);
return 0; }
结果:123.46
int main() {
double a=4.185;
int b;
a*=100;
a+=0.5;
b=(int)a;
a=b/100.0;
printf("四舍五入结果:%.2f\n",a);
return 0; }
结果为:4.18
...全文
202 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
转角天边 2012-11-19
  • 打赏
  • 举报
回复
引用 4 楼 smallMage 的回复:
引用 3 楼 anhuizhuanjiao 的回复:第一个
a*=100,所以a=12345.67
a+=0.5;,所以a=12346.17
b=(int)a;所以b=12346
a=b/100.0; 所以a=123.46000000
printf("四舍五入结果:%.2f\n",a); 输出小数点后两位,就是123.46
第二个是同样的道理

b=(……

a=12345.27结果为12345.27有什么不对吗

smallMage 2012-11-19
  • 打赏
  • 举报
回复
我考虑想用round来实现 小数点后面3为, double x= 4.285; x*=100; round(x)/100 遇到怪异的问题 如果x=4.185 结果就4.18郁闷
smallMage 2012-11-19
  • 打赏
  • 举报
回复
引用 3 楼 anhuizhuanjiao 的回复:
第一个 a*=100,所以a=12345.67 a+=0.5;,所以a=12346.17 b=(int)a;所以b=12346 a=b/100.0; 所以a=123.46000000 printf("四舍五入结果:%.2f\n",a); 输出小数点后两位,就是123.46 第二个是同样的道理 b=(int)a;这个不会四舍五入的,它直接把a的小数部分去掉的
如果a=12345.27了,你看看结果
转角天边 2012-11-16
  • 打赏
  • 举报
回复
第一个 a*=100,所以a=12345.67 a+=0.5;,所以a=12346.17 b=(int)a;所以b=12346 a=b/100.0; 所以a=123.46000000 printf("四舍五入结果:%.2f\n",a); 输出小数点后两位,就是123.46 第二个是同样的道理 b=(int)a;这个不会四舍五入的,它直接把a的小数部分去掉的
zhouganghao 2012-11-16
  • 打赏
  • 举报
回复
加上0.005
baichi4141 2012-11-16
  • 打赏
  • 举报
回复
加0.501

70,037

社区成员

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

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