×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
解題報告
#12972: 關於誤差的解決
k963852741
(啓揚)
學校 : 臺中市立東山高級中學
編號 : 60198
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [140.128.173.197]
最後登入時間 :
2018-11-24 12:16:59
a647.
投資專家
| From: [111.67.57.124] | 發表日期 : 2017-11-12 22:02
本題計算獲利率的公式為(p-m)/p*100%
而四捨五入的函式我使用的是
cout<<fixed<<setprecision(2)<<
獲利率
<<"% dispose"<<endl;
意即輸出獲利率四捨五入取到小數後兩位的結果
EX: 5.32
2
==> 5.32 3.22
4
66 ==> 3.22 8.78
5
==>8.79
但是有個缺點,在數學定義上 0.9999..... = 1 5.649999.... =5.65
在0.999...循環的情況下將直接視為1
而這個函數並不會管後方是否為9循環,所以我清除誤差的做法是這樣的
在後方若干小數位上加1(如果是負數則減1)
if(
獲利率
>0){
獲利率
+=0.00001;
}else if(
獲利率
<0){
獲利率
-=0.00001;
} //依題目表示1≤m,p≤100000,故小數最多五位
使其後方為999...循環時強制進位,不是999...循環時便不受影響,便可消除此誤差
ZeroJudge Forum