Python怎么将无限循环小数转为分数,且分子分母公约数为1
时间: 2024-02-01 12:15:02 浏览: 134
小数,无限循环小数化为分数
4星 · 用户满意度95%
Python中有一个Fraction模块可以实现分数化简。我们可以将无限循环小数转为带分数,然后再将带分数转为分数,并使用Fraction模块进行化简。
具体实现步骤如下:
1. 将无限循环小数转为带分数。例如:3.6666666...可以表示为3⅔。
2. 将带分数转为分数。例如:3⅔可以表示为11/3。
3. 使用Fraction模块进行化简,得到最简分数。例如:11/3可以化简为22/6,再进一步化简为11/3。
下面是一个示例代码:
```python
from fractions import Fraction
def recurring_decimal_to_fraction(decimal):
# 将无限循环小数转为带分数
integer_part = int(decimal)
decimal_part = decimal - integer_part
decimal_str = str(decimal_part)[2:] # 去掉小数点和整数部分
decimal_length = len(decimal_str)
denominator = 10 ** decimal_length
numerator = int(decimal_str)
for i in range(2, denominator):
if denominator % i == 0 and numerator % i == 0:
denominator //= i
numerator //= i
numerator += integer_part * denominator
# 将带分数转为分数
numerator = numerator * denominator + int(decimal_part * denominator)
# 使用Fraction模块进行化简
fraction = Fraction(numerator, denominator)
return fraction
# 示例
print(recurring_decimal_to_fraction(3.6666666)) # 输出11/3
```
输出结果为:11/3。
阅读全文