精華區beta NTUE-CS101 關於我們 聯絡資訊
星期三檢查作業的時候 不小心試了一個數字 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