You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

浮点除法一致性判定:如何准确判断两个分数是否等价?

判定两个分数a/b和c/d是否等价的正确方式

咱们都清楚,浮点数没办法精确表示所有十进制数值——比如1/3的浮点值永远不会严格等于1/3,所以直接用浮点数做相等判断绝对是个坑,真心不推荐。

不过你要判定a/b和c/d这两个分数是否等价,其实有更稳妥的整数运算思路:

  • 正如你提到的,若两个分数等价,必然存在正整数e和f,满足a*e = c*f 且 b*e = d*f(前提是a、b、c、d、e、f都是可表示的正整数)。
  • 换个更直接的推导方式,从分数等价的本质出发:a/b = c/d(因为都是正分数,分母不为0),交叉相乘后就得到a*d = c*b——这个等式其实和上面的条件是等价的,而且用起来更简单,不需要找e和f,直接计算两个整数乘积就能判断。

举个实际例子:比如分数2/4和1/2,交叉相乘22=4,14=4,结果相等,所以两个分数等价;再比如3/5和2/3,33=9,25=10,结果不等,分数自然不等价。

如果你的开发语言存在大整数溢出风险,还可以先对分数约分:分别求出a和b的最大公约数g1,把a/b约成(a/g1)/(b/g1);同理把c/d约成(c/g2)/(d/g2),然后直接比较约分后的分子、分母是否分别相等,这样能避免大数值相乘导致的溢出问题。


内容的提问来源于stack exchange,提问作者devtk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:48:29