python - 分数函数返回未减少的分数

标签 python python-3.x fractions

我正在尝试将数学表达式转换为约化分数。当使用 fractions 模块中的 Fraction 函数时,我得到了一个未减少的分数。

代码

from fractions import Fraction

print(Fraction(1 + 1/(2 + 1/2)))

返回 3152519739159347/2251799813685248,减少到 7/5

我希望我的代码返回减少的分数。

最佳答案

这是由于 float 学的不精确。

虽然 1 + 1/(2 + 1/2) 确实应该减少到 7/5(或 1.4) , 小数1.4不能用 float 精确表示

>>> '{:030f}'.format(1.4)
1.39999999999999999999911182158029987

这种不准确性导致它产生与 7/5

不同的分数

如果你想要精确的分数数学,你需要使用分数来计算整个方程,而不是将它与 float 混合。

关于python - 分数函数返回未减少的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183601/

相关文章:

python - Spacy 导入错误出 Undefined Symbol

python - c += map(lambda n : n *2, c) 杀死 Python 3 shell。为什么?

java - 使用数组计算时如何格式化输出?

python - 为 LSTM 模型调用预测函数时出现有关输入形状的错误

python - 无法在 Excel 文件中写入新填充的结果(源自反向搜索)

python - 计算Python列表中值的数量

Tornado 未正确返回 HTTP 状态消息

C++:将输入的不同部分分配给不同的变量

java - 如何在分数类中打印 double

python - 当我触摸 wsgi 脚本时,带有 mod_wsgi 的 Flask 应用程序不会重新加载