看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 請問一下, printf("%3.5f", x ); 要如何變換成 cout 格式? 我知道 %3f 可用 setw(3) 來解決, 但是 .5f 輸出小數部分該如何解決呢?(已解決,感激) 但剛剛試了一下 setprecision, 發現這居然是 5 捨 6 入,感覺有點奇怪。 有正常 4 捨 5 入的嘛? 另外,若是我想用 cout 輸出不同格式時, 例如在 printf 中的 %d %f %x %c %s 等, 又該怎麼轉換呢?謝謝指教! 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.190.61
loveme00835:研究一下 iomanip 這個標頭檔 08/18 21:13
legendmtg:setprecition 08/18 21:17
Cidolfas:感謝兩位!但有新問題,為啥setprecition是5捨6入的? 08/18 21:29
loveme00835:是四捨五入, 你是測什麼輸出什麼? 08/18 21:36
Cidolfas:我用setprecision(1)與setprecision(2)去做比對的 08/18 21:41
Cidolfas:然後用自己算的式子,發現有 0.1<->0.15, 0.2<->0.16 08/18 21:44
Cidolfas:這種關係,讓我覺得好像是5捨6入 08/18 21:44
※ 編輯: Cidolfas 來自: 219.85.190.61 (08/18 21:45)
loveme00835:轉成2進位表示看看吧... 08/18 22:00
uranusjr:應該不是五捨六入, 是四捨六入五成雙? 08/18 23:34
Cidolfas:五成雙是指啥啊? 08/18 23:40
loveme00835:這純粹只是浮點數儲存的誤差問題, 譬如0.15 你讓他精 08/18 23:53
loveme00835:確17位就能看出他根本不是0.15, 轉成二進位表示再加上 08/18 23:54
loveme00835:計概有的基本知識, 我想應該不會有太大疑問才是 08/18 23:54
loveme00835:IEEE 754 是用浮點數必須知道的儲存架構 08/18 23:56
VictorTom:四捨六入五成雙這個規則記得是要用二進位看算最後的 08/19 00:02
VictorTom:mantisa時才使用的, 而不是在十進位的地方用喔:) 08/19 00:03
VictorTom:這個看起來應該是樓上love大說的精確度問題:) 08/19 00:03
Cidolfas:感謝各位 08/19 00:07