作者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
推 lobaka:原來是錯在這喔,話說PRINTF被COUT取代是因為格式唷? 11/21 00:59
推 jerry771210:其實cout的執行速度比printf慢很多 11/21 11:24
推 rockmyangel:哇這是我們自己不會發現的 真酷阿 11/21 13:58
推 jim19900412:其實printf應該沒被取代吧= =~還是有很多人用C寫程式 11/21 14:12
推 jerry771210:1f沒有被取代 只是一種新的方法 依照設計者需求搭配 11/21 14:15