題目連線:
p5706 【深基2.例8】再分肥宅水 - 洛谷 | 電腦科學教育新生態 (luogu.com.cn)
我提交的:
1 #include2 #include3然而,只有乙個ac,思考良久,不知為何而錯。無奈看了看題解,發現人家比我多了乙個"fixed"。那這個"fixed"到底是什麼呢?using
namespace
std;
4int
main()
網上尋找了一圈,看見人家說:「如果乙個數字太大,無法使用 setprecision 指定的有效數字數來列印,則許多系統會以科學表示法的方式列印。」
經過嘗試後,發現果真如此:
所以應該加上fixed來控制位數。
那麼,為什麼setprecision不能這樣輸出呢?我又找了一圈,我發現我對setprecision的理解完全錯了。
我過去曾認為:setprecision就是傳統意義上,按照我們人腦控制的小數點位數。結果好像跟setw一樣的效果,都是控制總有效位數?
現在,問題來到了setw和setprecision的區別:
setw(n): 右對齊,不夠位數左邊加空格,可以用setfill()來控制左邊填充的東西
setprecision(n): 左對齊,不夠位數不填充,對於小數點後的0會自動省略。
double a = 123.321;
double b = 32.21
;
//cin >> a >> b;
double num = a /b;
cout
<< "
結果:"
<
cout
<< fixed
<< setw(6) << num << endl; //
看看是不是對setw有效
cout << setprecision(6) << num <
cout
<< num << endl; //
看看是不是對下面也有效
cout << setprecision(2) << num <
cout
<< num << endl; //
確實有效
cout << setprecision(1) << num << endl;
cout.setf(ios::fixed); //加上這一句也可以
結果:結論:加上fixed後,經過嘗試,setpricision可以控制小數字數,但是setw卻不行。3.828656
3.828656
3.828656
3.83
3.83
3.8d:\c++程式\try1\debug\try1.exe (程序 63548)已退出,**為 0
。要在除錯停止時自動關閉控制台,請啟用「工具」->「選項」->「除錯」->「除錯停止時自動關閉控制台」。
按任意鍵關閉此視窗. . .
總結:如果cout要控制小數點位數,那麼使用setprecision時要加上fixed;
fixed對setprecision都有效果,對setw沒有。
setw只對下乙個輸出值有效,而setprecision對後面的輸出都有效。
洛谷P5705 深基2 例7 數字反轉 題解
洛谷p5705 深基2.例7 數字反轉 題解 感想 我才一年沒動 啊,啥都忘記了啊,淦!最簡單的字串輸入輸出也忘了,從頭開始刷吧。題目 於洛谷,在這裡把幾種解題思路和 彙總一下。法一 字串輸入輸出並反轉 1.已知數字位數 include 萬能頭 using namespace std intmain...
洛谷 P3613 深基15 例2 寄包櫃
超市裡有 n n le10 5 個寄包櫃。每個寄包櫃格仔數量不一,第 iii 個寄包櫃有 a i a i le10 5 個格仔,不過我們並不知道各個 a i 的值。對於每個寄包櫃,格仔編號從 1 開始,一直到 a i 現在有 q q le10 5 次操作 已知超市裡共計不會超過 10 7 個寄包格仔...
洛谷P5266 深基17 例6 學籍管理
你可以選擇用map掃瞄,或者stack佇列,但我認為那些太高大上了,所以寫了乙個struct 結構體,給新手看的 include 標頭檔案,沒個說 include using namespace std struct node 鄙人的思考方法,結構體 node a 100005 int n int ...