c++ 输出问题

coder神农 2013-03-17 01:49:57
double a = 123.456789012345;
cout<<setprecision(9);
cout<<a<<endl;

得出的结果是123.456789这个没问题,但代码变成:
double a = 123.456789912345;
cout<<setprecision(9);
cout<<a<<endl;
输出的结果却是123.45679 为会么啊?8哪去了?
...全文
123 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
就是那个党伟 2013-03-19
  • 打赏
  • 举报
回复
引用 4 楼 lyhylex 的回复:
setprecision(int)控制输出流显示浮点数的有效数位(数字个数) 对于double a = 123.456789012345 有效位是 123.456789(0)舍去 对于double a = 123.456789912345 有效位是 123.456789(9)舍入 变成 123.456790 输出 123.45679 ……
正解。 我也是这么理解的
cjzmcy 2013-03-17
  • 打赏
  • 举报
回复
应该是这样的吧: 第二种情况下,有效位是123.456789(9),在保留九位有效数字后下一位是数字9,按照四舍五入的原则,9应该朝前进一位,因为前一位也是9,这样再加上进过来的一位就变成了10,继续朝前一位8进位,8接受下一位的进位变成9.所以最后的结果是123.45679
cjzmcy 2013-03-17
  • 打赏
  • 举报
回复
引用 4 楼 lyhylex 的回复:
setprecision(int)控制输出流显示浮点数的有效数位(数字个数) 对于double a = 123.456789012345 有效位是 123.456789(0)舍去 对于double a = 123.456789912345 有效位是 123.456789(9)舍入 变成 123.456790 输出 123.45679 ……
怎么第二种情况把9舍掉应该是123.456789呀。怎么还变成123.456790???之后输出怎么更是变成123.45679????希望看到原理性解释。谢谢您……
lyhylex 2013-03-17
  • 打赏
  • 举报
回复
setprecision(int)控制输出流显示浮点数的有效数位(数字个数) 对于double a = 123.456789012345 有效位是 123.456789(0)舍去 对于double a = 123.456789912345 有效位是 123.456789(9)舍入 变成 123.456790 输出 123.45679
jk19910410 2013-03-17
  • 打赏
  • 举报
回复
加上cout<<fixed就可以了 setiosflags(ios::fixed) 固定的浮点显示
coder神农 2013-03-17
  • 打赏
  • 举报
回复
引用 1 楼 qq120848369 的回复:
四舍五入了吧
为什么不是精度为9而是变成了精度为8 ?
qq120848369 2013-03-17
  • 打赏
  • 举报
回复
四舍五入了吧

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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