数学计算 本地计算 开箱即用 内置示例 不留痕迹

分数计算器

输入两个数(支持 1/3、0.75、75%、2 1/3 等写法)与运算符,得到最简分数、带分数、小数与百分数,并用一张表对照两个输入与结果的三种写法。

分数是小学算术的分水岭:0.5 写成 1/2 就开始有孩子犯迷糊,通分约分更是错题重灾区。这个工具接收各种写法的分数——正经分数、小数、百分数、带分数混着输都行,算完把每一步结果同时用几种写法摆在一起对照,孩子能直观看到 3/4、0.75 和 75% 原来是同一个数,家长验算作业也有了依据。

口径说明:结果自动约分到最简(6/8 → 3/4),假分数同时给带分数形式(7/3 = 2 1/3);除法按「乘倒数」规则处理,除数为 0 明确报错;百分数输入按 75% = 0.75 解析。

使用步骤

  1. 输入两个数(1/3、0.75、75%、2 1/3 混着填都行)。
  2. 选运算符(加减乘除),看最简分数与带分数结果。
  3. 看对照表:两个输入与结果的小数、百分数写法。
  4. 复制结果;除数为 0 会明确报错。

计算原理与示例

为什么用分数而不是小数

先算的是有理数,而不是小数:a/b ± c/d 先通分再加减,乘法是分子乘分子、分母乘分母,除法等于乘以倒数。以 1/3 + 1/6 为例,通分到 6 得 2/6 + 1/6 = 3/6,约分后是 1/2。工具内部用整数(BigInt)表示分子分母,所以 1/3 这种除不尽的数也不会被 0.333333 的浮点近似污染。

约分与通分到底在做什么

约分=分子分母同时除以最大公约数;通分=把分母统一成最小公倍数。结果始终给出最简分数,并额外提供带分数:22/7 写作 3 1/7,读起来就是「三又七分之一」——在烘焙、木工等生活场景里比假分数直观,但在代数运算中假分数更好用。

循环小数怎么读怎么写

小数形式分两类:分母只含 2 和 5 的质因数时是有限小数(7/8 = 0.875、3/4 = 0.75);否则会出现循环节,用括号标出:1/3 = 0.(3)、5/6 = 0.8(3)、22/7 = 3.(142857)。看到括号就知道后面的数字是无限循环的,写成分数才是精确值。

计算依据:分数四则按有理数运算法则(通分加减、分子分母相乘、乘以倒数),分子分母以整数(BigInt)表示后约分到最简;循环小数通过长除法余数检测得出循环节。

代码示例

JavaScript 分数类:约分用 GCD

const gcd = (a, b) => b ? gcd(b, a % b) : Math.abs(a);

class Frac {
  constructor(n, d) {
    if (d < 0) { n = -n; d = -d; }
    const g = gcd(n, d) || 1;
    this.n = n / g; this.d = d / g;       // 构造即约分
  }
  add(o) { return new Frac(this.n * o.d + o.n * this.d, this.d * o.d); }
  mul(o) { return new Frac(this.n * o.n, this.d * o.d); }
  toString() { return this.n + "/" + this.d; }
}

new Frac(6, 8).toString();   // "3/4"

Python fractions 标准库

from fractions import Fraction

Fraction(6, 8)          # Fraction(3, 4)(自动约分)
Fraction(0.75)          # Fraction(3, 4)
Fraction("2 1/3")       # 不支持带分数字符串,需手拆

Fraction(1, 3) + Fraction(1, 6)   # Fraction(1, 2)
float(Fraction(1, 3))             # 0.333...

常见问题

1/3 和 0.333 是一样的吗?

不一样。0.333 只是 1/3 的近似值,乘以 3 得 0.999 而不是 1;1/3 是精确值。需要继续计算时用分数不会累积误差,这也是本工具用整数运算的原因。

小数怎么变回分数?

直接把小数填进去即可(0.75 → 3/4)。原理:0.75 = 75/100,分子分母同除 25 得 3/4。循环小数用方程法,如设 x = 0.(3),则 10x − x = 3,解得 x = 1/3。

带分数怎么输入?

用空格分隔整数部分和分数部分,例如「2 1/3」表示二又三分之一(等于 7/3)。注意别把「21/3」当带分数,那是 7。

为什么 1/2 + 1/3 不等于 2/5?

分母不能直接相加。必须先通分:1/2 = 3/6、1/3 = 2/6,分子相加得到 5/6。2/5 是错误答案,数值上 0.4 也小于 1/2。

分数除法为什么变成乘法?

除以一个数等于乘以它的倒数:(3/4) ÷ (1/8) = (3/4) × 8 = 6。这样写能把除法统一成乘法法则,避免再单独记一套规则。

结果里的带分数有什么用?

生活场景更直观(3 1/7 杯面粉比 22/7 杯好理解),而代数运算里假分数更方便直接参与计算。两种写法都可以,工具同时给出。

输入的数字会被上传吗?

不会。分子分母只在浏览器本地做整数运算,不发送到服务器,也不做任何存储;计算历史只存在本机浏览器中,可一键清空,无痕窗口关闭即消失。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。