×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
#11290: 解本題的壹種方法——借用a248的算法
foundkey
(foundkey)
學校 : 不指定學校
編號 : 58659
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [183.206.161.135]
最後登入時間 :
2017-06-18 18:37:32
a647.
投資專家
| From: [114.221.188.128] | 發表日期 : 2016-08-18 20:43
很多人就被浮點數的誤差折騰很久,忽略四舍五入,8.98%那筆會出錯。不忽略四舍五入,其他題又會出錯。既然編譯器自帶的浮點數運算誤差不好控制,我們就自己來寫浮點數除法,通過a248那題的算法,把結果保存到壹個字符串中(我保留了3位小數,運算前我把價格的漲幅擴大到了100倍,這樣得到的結果直接是百分比)。得到字符串結果後,根據第三位小數的值對前面數據進行四舍五入的處理,就能得到正確的結果。
string praCalc(int a, int b, int pra); //將a除以b的結果放入字符串中返回,結果精確到小數點後pra位
以a=20000, b=21797這壹筆為子,
string result = praCalc((b - a) * 100, a, 3); //result的值為”8.985",註意這是壹個字符串
根據小數點後第三位的值(是否大於等於5)來判斷是否要進行四舍五入的,本次例子就需要,結果為“8.99",由於是字符串,四舍五入操作會比較麻煩。
最後要註意的是出現負數的情況,這裏沒有討論,大家自己小心。
還有就是”dispose“與”keep“的判斷,這個也留給大家討論。
前期後後測了11次才過。。。
ZeroJudge Forum