所謂的「浮點誤差(Round-off error)」,是指程式在計算小數時,會不可避免地出現誤差,想更深入了解原因的可以去搜尋「浮點誤差」。
解決這個問題的方法,第一種是使用「高精度計算(Arbitrary-precision arithmetic)」,第二種就是盡量減少小數運算。
關於第二種方法,你可以先用 float 輸入,將它乘上一個很大的十的倍數(以這題來說,比如1000),再把它轉成 int,算完之後最後再除掉這個倍數。當然,在某些情況下這仍然會出錯,不過對於本題來說足夠了。
除此之外,你也可以四捨五入到小數點很下面,比如第10位,這種不會影響答案(比答案位數小很多)、又比浮點誤差還大很多的位數。
所謂的「浮點誤差(Round-off error)」,是指程式在計算小數時,會不可避免地出現誤差,想更深入了解原因的可以去搜尋「浮點誤差」。
解決這個問題的方法,第一種是使用「高精度計算(Arbitrary-precision arithmetic)」,第二種就是盡量減少小數運算。
關於第二種方法,你可以先用 float 輸入,將它乘上一個很大的十的倍數(以這題來說,比如1000),再把它轉成 int,算完之後最後再除掉這個倍數。當然,在某些情況下這仍然會出錯,不過對於本題來說足夠了。
除此之外,你也可以四捨五入到小數點很下面,比如第10位,這種不會影響答案(比答案位數小很多)、又比浮點誤差還大很多的位數。
我發現可以不用轉int誒