#16216: float double


krannpan@gmail.com (pan krann)

學校 : 不指定學校
編號 : 87620
來源 : []
最後登入時間 :
2018-10-25 23:07:12
a647. 投資專家 | From: [59.115.16.64] | 發表日期 : 2018-12-07 21:58

參考這個轉換程式

http://www.binaryconvert.com/convert_float.html?decimal=048046048056057056053

 

0.08985

用float 會變成8.9850001037120819091796875E-2

用double會變成8.98499999999999993116617247324E-2

一個會進位,一個不會

0.00001

用float 會變成9.99999974737875163555145263672E-6

用double會變成1.00000000000000008180305391403E-5

 

 

 

 

 

 

 
#16217: Re:float double


krannpan@gmail.com (pan krann)

學校 : 不指定學校
編號 : 87620
來源 : []
最後登入時間 :
2018-10-25 23:07:12
a647. 投資專家 | From: [59.115.16.64] | 發表日期 : 2018-12-07 22:44

 

此題最小的非零正獲利率為1/100000 = 0.00001 = 0.001%


小數點後要取兩位,又要四捨五入

因此遇到0.005% 0.015% 0.025%等數值時

可能會遇到浮點數會比該數值大一點或小一點的狀況

 

解決方法是加上 0.0001%

由於獲利率是以0.001%為基本單位增加

加上0.0001%並不會影響正確數值的四捨五入(到小數點第二位)

但可以把所有的浮點數誤差都變成偏向增加

 
ZeroJudge Forum