python 循环小数转分数
时间: 2023-10-21 09:07:14 浏览: 181
小数转分数
要将一个循环小数转化为分数,可以使用以下步骤:
1. 将循环小数表示为一个无限不循环小数
2. 将无限不循环小数转化为分数
下面是一个 Python 函数,可以将一个循环小数转化为分数:
```python
def recurring_decimal_to_fraction(decimal):
# 将循环小数表示为无限不循环小数
decimal_str = str(decimal)
whole_part, decimal_part = decimal_str.split('.')
non_repeating_part = int(whole_part)
repeating_part = decimal_part[decimal_part.index('(')+1:decimal_part.index(')')]
num_digits_repeating = len(repeating_part)
num_zeros = '1' + '0' * num_digits_repeating
numerator = int(repeating_part) - non_repeating_part
denominator = int(num_zeros) - 1
# 将无限不循环小数转化为分数
gcd = math.gcd(numerator, denominator)
numerator //= gcd
denominator //= gcd
numerator += non_repeating_part * denominator
return (numerator, denominator)
```
使用这个函数,可以将循环小数 `0.6666...` 转化为分数:
```python
>>> recurring_decimal_to_fraction(0.6666666666666666)
(2, 3)
```
注意,这个函数只适用于纯循环小数。如果有非循环部分,需要另外处理。
阅读全文