看板 C_and_CPP 關於我們 聯絡資訊
抱歉又是一個新手的問題...... 關於double宣告變數,課本說有效位數15位,是代表整數+小數點+小數位共15位? 還是有包含指數部分? 以下為簡單程式碼(省略開頭) double a = 1.23456789e+308; cout<<b; 結果是1.23457e+308 為什麼會四捨五入了?如果宣告是float我還能理解........ 再來下一個程式碼 double a = 1.234567; cout<<"12345678901234567890"<<endl; cout.precision(8); cout<<a<<endl; cout.width(20); cout.setf(ios::scirntific,ios::floatield); cout<<a<<endl; 結果 12345678901234567890 1.234567 1.23456700e+000 後面那個00怎出來的呢@@?依照上一個程式碼,後面有四捨五入但這個沒有 跟ios::scirntific,ios::floatield有關係嗎?想很久不懂 上學期計概太混,結果這個看不懂 ..... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.132.54 ※ 編輯: Mercury0625 來自: 140.116.132.54 (03/24 16:07)
danielguo:指定了 ios::scientific 就是用科學記數法, 才會有 e+00 03/24 17:28
danielguo:http://goo.gl/boWjP 03/24 17:28
danielguo:第一個例子, 你先 cout.precision 設好就可以全顯示啦 03/24 17:32
danielguo:有效位數是二進位換算的, 53 bits 約 15.955 個數字 03/24 17:34
danielguo:指數不算, 見 http://goo.gl/ORIXG 03/24 17:37
tropical72:原 po 該先讀讀 IEEE754,除了最小正數、最大負數有出入 03/24 18:08
tropical72:外,其餘與 C/C++ 儲存方式並無過大差異。 03/24 18:09
Mercury0625:回D大,我的疑問是小數點後的00,不是科學記號@@ 03/24 18:26
Mercury0625:就是為什麼範例一會四捨五入,但範例二多出00 03/24 18:26
danielguo:你用 precision(8), 輸出 1.234567, 不到八位當然就補零 03/25 01:01
danielguo:你把 precision(8) 改成 50 就知道了 03/25 01:03