解決了小數的問題後又會出現另一個小數誤差的問題
像是答案-7.00應該是dispose
但是答案要的卻是keep
可能的原因是 答案是 -6.99999999999......,雖然最後顯示成 -7.00 但是本質卻還是大於 -7.00 的,所以答案才會是keep
解決方法就是判斷是否dispose的時候用原始的( p/m - 1 )*100 去判斷,而不要用處理過小數誤差的值去判斷
(這題是好題目,讓你了解有小數誤差的存在,但是壞的地方就是判斷是否dispose的地方壞掉了,既然都顯示爲-7.00了答案卻是keep這點無法接受,因爲和題目敘述不符,即使是-7.00的本質是-6.99999999999,總結:題目壞了,差評)
解決了小數的問題後又會出現另一個小數誤差的問題
像是答案-7.00應該是dispose
但是答案要的卻是keep
可能的原因是 答案是 -6.99999999999......,雖然最後顯示成 -7.00 但是本質卻還是大於 -7.00 的,所以答案才會是keep
解決方法就是判斷是否dispose的時候用原始的( p/m - 1 )*100 去判斷,而不要用處理過小數誤差的值去判斷
(這題是好題目,讓你了解有小數誤差的存在,但是壞的地方就是判斷是否dispose的地方壞掉了,既然都顯示爲-7.00了答案卻是keep這點無法接受,因爲和題目敘述不符,即使是-7.00的本質是-6.99999999999,總結:題目壞了,差評)
我認為這個題目本身的測資自相矛盾,若真實狀況下是不能被接受的,應該修正!
小數誤差的確存在,但題目如此設計有刁人之嫌,意義不大!
要先了解到 實際的數值 和 輸出的數值 是兩個不一樣的東西,
實際的數值 才是用來判斷 dispose 或 keep 的依據,
而 輸出的數值 是方便我們 輸出/閱讀 經過四捨五入的數值,
其本身已經不具判斷的能力了(因為已經與原數值不同)~
大概測試了一下,
本題最接近 -7.00% 的測資如下:
843 784
實際計算的結果近似於:
-0.069988137603795966785290628707%
其本身也不是 -7.00%
因為明顯 -0.069988137603795966785290628707% > -7.00% 所以選擇 keep ,
以上就是選擇 kepp 的原因,
所以並沒有樓主所謂的浮點數誤差的問題唷~
並不是將 -0.069988137603795966785290628707% 四捨五入變成 -7.00% 之後才做判斷的唷~