gpt4 book ai didi

algorithm - 袖珍计算器如何简化分数并将不精确的数字保留为分数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:56 24 4
gpt4 key购买 nike

有人能解释一下计算器(例如卡西欧袖珍计算器)如何处理“500/12”等方程式并能够返回“125/3”作为结果,或者有人能说出一些执行此操作的算法吗?

我所说的不精确数字是指不能以固定小数位数表示的数字,例如 0.333 循环。

Windows 计算器能够证明这一点,如果您执行“1/3”,您将得到“0.3333333333333333”作为答案,但是如果您将其乘以 3,您将返回“1”。

最佳答案

我的 HP 的分数显示让您可以设置几种分数显示模式:

  • 设置最大分母。显示的分数是 n/d 最接近内部浮点值,d 不超过最大值。例如,如果最大值设置为 10,则 pi 的 float 最接近分数 22/7。但是,如果最大值为 1000,则最接近的分数为 355/113

  • 设置一个精确的分母并减少结果。显示的分数是最接近内部浮点值的 n/d,其中 d 等于精确的分母。计算出 n 后,分数会减去最大公分母。例如,如果分母固定为 32,则 float 0.51 最接近 16/32,它会减少为 1/2。同样, float 0.516 最接近不可约的 17/32

  • 设置一个精确的分母并且不减少结果。例如,0.51 显示为 16/32,这是一个未减少的分数。

最大分母方法的算法使用 continued fractions .可以在 http://hg.python.org/cpython/file/2.7/Lib/fractions.py#l206 的 limit_denominator 方法中找到一个易于遵循的 Python 示例。 .

精确分母方法的方法更简单。给定一个分母 d 和一个 float x,分子只是 d * x 四舍五入到最接近的整数。然后通过计算 greatest common divisor. 来减少分数 n/d

可选地,可以用显示的分数替换原始 float 。这称为对齐网格。这样,您可以输入 0.333 来创建一个正好等于1/3 的分数。这使您可以在不进行舍入的情况下进行精确的小数运算。

希望这个答案能为您解决所有问题 :-) 如果有任何部分需要详细说明或进一步解释,请告诉我。

关于algorithm - 袖珍计算器如何简化分数并将不精确的数字保留为分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9855700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com