作者yantchen (球童Yanting)
看板NTUE-CS101
标题[课业] cout<<99999*3/2.0;
时间Thu Nov 20 23:11:29 2008
星期三检查作业的时候 不小心试了一个数字
cout<<99999*3/2.0;
本来预估他是 149998.5
但很神奇的变成 149999
一时想不到原因
查了资料发现
在课本 14-12 页
cout 预设显示的有效位数只有
6 位数
99999*3/2.0 = 149998.5
float 的精确度有 7 位 ; double 是 14 位
但 cout 的精确度预设是 6 位
所以 149998.5 会四舍五入成 149999
解决的方法:
cout.presicion(10); ( 大於6就好 )
cout<<99999*3/2.0;
这个东西仅供参考
之後检查作业的时候不会去特别踹这个
不过这个就是一个经验罗 以後写严谨的程式要稍微注意一下
cout 是 C++ 新提供的物件
用 C 的输出函数 printf("%f",99999*3/2.0); 的话可以正常输出 149998.5
cout/cin 虽然比 printf/scanf 方便很多 不用管输入格式
但他里面其实帮我们做了我们很多不知道的事情 没有查资料怎麽错的都不知道
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.68.15.209
1F:推 lobaka:原来是错在这喔,话说PRINTF被COUT取代是因为格式唷? 11/21 00:59
2F:推 jerry771210:其实cout的执行速度比printf慢很多 11/21 11:24
3F:推 rockmyangel:哇这是我们自己不会发现的 真酷阿 11/21 13:58
4F:推 jim19900412:其实printf应该没被取代吧= =~还是有很多人用C写程式 11/21 14:12
5F:推 jerry771210:1f没有被取代 只是一种新的方法 依照设计者需求搭配 11/21 14:15