Contents
Problem
Solution
為了避免精度問題將小數點後用字串存下後轉 int。
此時為了把循環的部分刪掉:
$0.3\overline{18} = \frac{318.\overline{18}-3.\overline{18}}{10^3-10^{(3-2)}} = \frac {315}{990} = \frac {7}{22}$上面 10 的指數部分 3 為小數點長度,2 是循環長度。
(意義同等題目給的式子)
分子 = n - n / (int)pow(10, j);
分母 = (int)pow(10, len) - (int)pow(10, len - j);
因為我們一開始就將它存成整數了,所以分子部分可以直接減,n / (int)pow(10, j)
就是直接把循環部份去掉。
最後再找 GCD 約分即可。
要特別注意不是循環小數和 0 0.0
的輸出。
Code
1 |
|