python - 分数函数返回未减少的分数
问题描述
我正在尝试将数学表达式转换为缩减分数。当使用分数模块中的分数函数时,我得到一个未减少的分数。
编码
from fractions import Fraction
print(Fraction(1 + 1/(2 + 1/2)))
返回3152519739159347/2251799813685248
减少到7/5
。
我希望我的代码返回减少的分数。
解决方案
这是由于浮点数学的不精确性。
虽然确实1 + 1/(2 + 1/2)
应该减少到7/5
(或1.4
),但小数1.4
不能用浮点数精确表示
>>> '{:030f}'.format(1.4)
1.39999999999999999999911182158029987
这种不准确性导致它产生的分数不同于7/5
如果您想要精确的分数数学,您需要使用分数来完成整个方程式,而不是将其与浮点数混合。
推荐阅读
- javascript - 在 ExpansionPanelSummary [React Material-UI] 中定位内容
- visual-studio-code - 语言服务器如何访问与源文件位于同一目录中的文件
- javascript - XmlHttpRequest 不工作,说模块未定义
- c# - 如何使用随机数据 c# 自动填充类?
- swift - ARKit:不在视图中时停止 AVPlayer 音频
- micronaut - Micronaut 中的基类注入何时发生
- python - 给定根节点,是否有一种遍历路径的新模型方法?
- javascript - 如何在 Angular 循环中运行下一个服务调用之前等待对我的控制器的每个服务调用?
- excel-formula - Sumif 行并向下拖动以增加列(索引 - 匹配)
- python - 我可以在条件后使用熊猫提取行吗?