📅  最后修改于: 2023-12-03 15:25:12.959000             🧑  作者: Mango
有限小数可以直接表示为有理数,但是像这样重复出现的数字需要一些数学方法来表示为有理数。
这个数可以写成以下形式:
$$ 6.\overline{684} $$
将 $10^n$ 乘以这个数,并减去原来的数得到:
$$ 10^n \times 6.\overline{684} - 6.\overline{684} \ = 6.684684... \times 10^n - 0.684684... \ = 6684.684684... - 0.684684... \ = 6684 \frac{1000}{999} $$
最后,将这个有理数化简得到:
$$ 6.\overline{684} = \frac{6684 \frac{1000}{999}}{10^n - 1} $$
因此,6.684684684...可以表示为 $\frac{6684 \frac{1000}{999}}{10^n - 1}$,其中 $n$ 是一个大于等于循环节长度的正整数。
代码片段:
def to_rational(num: float) -> str:
nines = '9' * len(str(num).split('.')[1])
numerator = int(num * 1000 * int(nines) / 999)
denominator = int(nines)
return f"{numerator} / {denominator}"
print(to_rational(6.684684684))
# 输出 6684000 / 999000