#27216: 0.5似乎不會有誤差(附帶printf與cout輸出格式)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a647. 投資專家 | From: [27.52.228.184] | 發表日期 : 2021-09-19 09:26

輸出格式要求小數點後兩位,但是因為浮點有誤差,如果數值最後面是0.005的時候就有可能出錯。我想到的解決方式是一開始就多乘100,原本最後面是0.005,就會變成0.5,0.5不會有誤差的問題,然後用round()取整數再除100,就可以得到正確答案了。

 

另外輸出格式的部分,要輸出小數點後兩位,總共6個字,可以用printf或是cout設定。

printf可以在%符號後使用數字代表width,.數字代表precision,所以width為6,precision為2可以使用"%6.2f"。

(參考資料:https://zh.wikipedia.org/wiki/%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%AD%97%E7%AC%A6%E4%B8%B2,https://www.cplusplus.com/reference/cstdio/printf/?kw=printf)

至於cout可以用fixed和setprecision設定小數點後的位數,setw設定寬度,所以這題可以用cout<<fixed<<setprecision(2)<<setw(6)輸出

 
ZeroJudge Forum