计算工具 · 数学计算

分数计算

加减乘除/化简/分数→小数

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 62 次使用
两数四则 two operands

分子分母填整数(负号写分子)。结果自动约分到最简。

多项链式表达式 chain expression

支持 + − × ÷ ^ ( )、带分数 1 2/3、小数 0.5;留空则用上方两数。

输入后即时计算 · 等待中…
就绪 · 全程 BigInt 精确分数运算,自动约分到最简 a/b · c/d · +−×÷
第一节

关于本工具

About

批改作业时,发现分数加减结果写成 12/8 而未约分,是判对还是判错?这个工具接受任意两个分数(含整数、带分数),自动完成加减乘除并输出最简分数,同时给出小数近似值。化简逻辑遵循欧几里得算法,结果不依赖后端——所有计算在浏览器内完成,输入不会离开本地。

使用场景

烘焙配方缩放

周末在家烤蛋糕,找到一个 6 寸的完美配方,但家里模具是 8 寸的。按面积换算,材料需要乘以约 1.78。面粉、糖、牛奶这些量都变成了带分数的数,比如 3/4 杯面粉要变成 1 又 1/3 杯。用这个工具直接输入 3/4 × 1.78,出结果 1.335,再化简为 1 又 67/200,能精确到小数点后三位,比凭感觉抓一把靠谱太多。

装修瓷砖用量

厨房墙面长 3.6 米,高 2.4 米,用的是 30cm × 60cm 的瓷砖。算墙面面积:3.6 × 2.4 = 8.64 平方米。单片砖面积:0.3 × 0.6 = 0.18 平方米。需要片数:8.64 ÷ 0.18 = 48 片。但师傅说损耗率按 5% 算,48 × 105% = 50.4 片。输入 48 × 105/100,得出 50 又 2/5,直接取整 51 片下单,不用再拿计算器按两遍。

药液稀释配比

给月季喷药,说明书写 1:800 稀释,但手头只有 5ml 的原液瓶。需要加多少水?5 × 800 = 4000ml,也就是 4 升。可喷壶是 1.5 升的,一次用不完。改成 1.5 升水配多少原液:1500 ÷ 800 = 1.875ml。喷壶刻度只到 ml,1.875 化成 15/8 ml,用 1ml 针管抽 1.875 格,比目测准,不伤花。

学生作业检查

孩子做分数加减法练习,答案写 3/4 + 5/6 = 19/12。家长想验证对错,但自己通分算一遍要花几分钟。把 3/4 + 5/6 输进工具,直接出结果 19/12,还能看到化简后的最简分数。如果孩子写成 38/24,工具也能把它约成 19/12,一眼看出答案本质相同,只是没约分。

对比矩阵

维度本工具计算器 App手工计算
输入方式直接输入分数算式,如 1/2 + 1/3需先换算为小数或使用专用分数键需通分、找最小公倍数,手写或心算
输出形式同时显示分数结果、小数结果、是否已化简通常只显示小数或分数,需手动切换结果形式自定,但易出错
化简能力自动化简为最简分数部分 App 需手动化简或不支持需自行约分,依赖因数分解能力
运算速度即时出结果秒级,但输入步骤较多数秒到数分钟,取决于复杂度
错误风险无计算错误,仅受输入格式影响按键误触或小数精度丢失通分、约分、符号等环节易出错
离线可用浏览器本地运行,无需网络需安装 App,部分需联网完全离线,但需纸笔
第二节

使用指南

Getting Started

使用步骤

  1. 1在第一个输入框键入分子(如 3),第二个输入框键入分母(如 4),结果区实时显示分数形式
  2. 2点「化简」按钮,分数自动约分为最简形式(如 6/8 → 3/4),结果区更新
  3. 3点「→小数」按钮,分数转为小数(如 3/4 → 0.75),结果区显示转换结果
  4. 4在运算符下拉框选择「+」「-」「×」「÷」,输入第二个分数后点「计算」,结果区显示运算结果

输入输出示例

输入输出说明
1/2 + 1/35/6常规:异分母加法,验证通分与约分正确性
3/4 - 1/21/4常规:异分母减法,结果自动化为最简分数
2/3 × 3/41/2常规:乘法后约分,验证交叉约分功能
5/6 ÷ 2/35/4常规:除法(乘以倒数),结果假分数保留
0/50边界:分子为零,输出整数0而非分数
8/42边界:可化为整数的假分数,自动输出整数
3/0错误:分母不能为零易错:分母为0的非法输入,工具应明确报错而非返回无穷大
1/2 → 小数0.5转换:分数转小数,验证精度与格式

常见错误对照

1.分数化简时误用除法代替约分

✗ 错误输入 8/12 后直接计算 8÷12=0.6667,不化简
✓ 修复输入 8/12 后点击“化简”按钮,得到 2/3

分数化简需要分子分母同除以最大公约数(GCD),直接除得到的是小数近似值,丢失了分数精确形式。

2.带分数输入格式错误

✗ 错误输入 1 1/2 写成 11/2
✓ 修复输入 1 1/2 写成 1_1/2 或 1+1/2(按工具提示格式)

空格在分数输入中常被忽略或解析为分隔符,导致 11/2 被当作假分数 11/2(=5.5),而非 1½。

3.分子分母顺序颠倒

✗ 错误想计算 3÷4,输入 4/3
✓ 修复输入 3/4

分数 a/b 中 a 是分子(被除数)、b 是分母(除数),顺序颠倒直接改变数值,常见于快速输入时疏忽。

4.负数分数符号位置不统一

✗ 错误输入 -3/-4 或 3/-4
✓ 修复输入 -3/4 或 3/4 后手动取负

多数分数计算器约定符号放在分子前,分母和分子同时为负会抵消,分母含负号可能导致解析异常。

5.小数转分数时忽略循环节

✗ 错误输入 0.3333 转分数,得到 3333/10000
✓ 修复输入 0.3333 后选择“循环小数”模式,或输入 0.3̅(若支持)

有限小数 0.3333 与循环小数 0.3̅ 不同,前者精确值为 3333/10000,后者为 1/3。工具若只处理有限小数,结果会近似而非精确。

6.结果未约分直接使用

✗ 错误计算 2/4 + 1/4 = 3/4,但看到 3/4 就以为是最简
✓ 修复计算后检查结果是否已自动化简,若未化简则手动点击化简

部分工具默认不自动约分,3/4 虽已最简,但若得到 6/8 未化简,后续计算会积累误差或混淆。

7.分母为零未提前检查

✗ 错误输入 5/0 进行加减乘除
✓ 修复输入前确认分母不为零,或输入 5/1 等合法值

分母为零在数学上无定义,计算器会报错或返回 Infinity,不是有效分数。

第三节

工作原理

How It Works

核心公式

a/b + c/d = (a×d + c×b) / (b×d),化简为最简分数

变量说明

  • a第一个分数的分子
  • b第一个分数的分母,非零
  • c第二个分数的分子
  • d第二个分数的分母,非零

示例

计算 2/3 + 1/4:通分得 (2×4 + 1×3) / (3×4) = (8+3)/12 = 11/12,已是最简分数,结果为 11/12。

输入分数解析分子分母校验分母 ≠ 0执行运算通分 / 约分结果化简分数求最大公约数最简分数/ 小数分数→小数分子÷分母
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

6 种主流语言实现,复制即用:

from fractions import Fraction from math import gcd # 分数加减乘除与化简 f1 = Fraction(3, 4) # 3/4 f2 = Fraction(1, 6) # 1/6 # 加法 add = f1 + f2 # 11/12 # 减法 sub = f1 - f2 # 7/12 # 乘法 mul = f1 * f2 # 1/8 # 除法 div = f1 / f2 # 9/2 # 化简(Fraction 自动化简) print(f"{f1} + {f2} = {add}") # 3/4 + 1/6 = 11/12 print(f"{f1} - {f2} = {sub}") # 3/4 - 1/6 = 7/12 print(f"{f1} × {f2} = {mul}") # 3/4 × 1/6 = 1/8 print(f"{f1} ÷ {f2} = {div}") # 3/4 ÷ 1/6 = 9/2 # 分数 → 小数 print(float(Fraction(7, 8))) # 0.875
// 分数计算:加减乘除、化简、转小数 // 使用整数分子分母,避免浮点误差 function frac(n, d) { // 求最大公约数化简 const g = gcd(Math.abs(n), Math.abs(d)); const sign = (d < 0) ? -1 : 1; return { n: sign * n / g, d: Math.abs(d) / g }; } function gcd(a, b) { while (b) { [a, b] = [b, a % b]; } return a; } const a = frac(3, 4); // 3/4 const b = frac(1, 6); // 1/6 // 加法 const add = frac(a.n * b.d + b.n * a.d, a.d * b.d); // 减法 const sub = frac(a.n * b.d - b.n * a.d, a.d * b.d); // 乘法 const mul = frac(a.n * b.n, a.d * b.d); // 除法 const div = frac(a.n * b.d, a.d * b.n); console.log(`3/4 + 1/6 = ${add.n}/${add.d}`); // 11/12 console.log(`3/4 - 1/6 = ${sub.n}/${sub.d}`); // 7/12 console.log(`3/4 × 1/6 = ${mul.n}/${mul.d}`); // 1/8 console.log(`3/4 ÷ 1/6 = ${div.n}/${div.d}`); // 9/2 // 分数 → 小数 console.log(7/8); // 0.875
package main import ( "fmt" "math/big" ) func main() { // 使用 math/big.Rat 精确表示分数 a := new(big.Rat).SetFrac64(3, 4) // 3/4 b := new(big.Rat).SetFrac64(1, 6) // 1/6 // 加减乘除 add := new(big.Rat).Add(a, b) // 11/12 sub := new(big.Rat).Sub(a, b) // 7/12 mul := new(big.Rat).Mul(a, b) // 1/8 div := new(big.Rat).Quo(a, b) // 9/2 fmt.Printf("%s + %s = %s\n", a, b, add) fmt.Printf("%s - %s = %s\n", a, b, sub) fmt.Printf("%s × %s = %s\n", a, b, mul) fmt.Printf("%s ÷ %s = %s\n", a, b, div) // 分数 → 小数(浮点近似) f, _ := new(big.Rat).SetFrac64(7, 8).Float64() fmt.Println(f) // 0.875 }
use num_rational::Rational64; fn main() { let a = Rational64::new(3, 4); // 3/4 let b = Rational64::new(1, 6); // 1/6 // 加减乘除(自动化简) let add = a + b; // 11/12 let sub = a - b; // 7/12 let mul = a * b; // 1/8 let div = a / b; // 9/2 println!("{} + {} = {}", a, b, add); println!("{} - {} = {}", a, b, sub); println!("{} × {} = {}", a, b, mul); println!("{} ÷ {} = {}", a, b, div); // 分数 → 小数 let f = Rational64::new(7, 8); println!("{}", f.to_f64().unwrap()); // 0.875 }
<?php // 分数计算:加减乘除、化简、转小数 function frac($n, $d) { $g = gmp_gcd(gmp_abs($n), gmp_abs($d)); $sign = ($d < 0) ? -1 : 1; return [$sign * $n / $g, abs($d) / $g]; } $a = frac(3, 4); // [3, 4] $b = frac(1, 6); // [1, 6] // 加法 $add = frac($a[0]*$b[1] + $b[0]*$a[1], $a[1]*$b[1]); // 减法 $sub = frac($a[0]*$b[1] - $b[0]*$a[1], $a[1]*$b[1]); // 乘法 $mul = frac($a[0]*$b[0], $a[1]*$b[1]); // 除法 $div = frac($a[0]*$b[1], $a[1]*$b[0]); echo "3/4 + 1/6 = {$add[0]}/{$add[1]}\n"; // 11/12 echo "3/4 - 1/6 = {$sub[0]}/{$sub[1]}\n"; // 7/12 echo "3/4 × 1/6 = {$mul[0]}/{$mul[1]}\n"; // 1/8 echo "3/4 ÷ 1/6 = {$div[0]}/{$div[1]}\n"; // 9/2 // 分数 → 小数 echo 7/8 . "\n"; // 0.875
require 'rational' # Ruby 内置 Rational 类,自动化简 a = Rational(3, 4) # 3/4 b = Rational(1, 6) # 1/6 # 加减乘除 add = a + b # 11/12 sub = a - b # 7/12 mul = a * b # 1/8 div = a / b # 9/2 puts "#{a} + #{b} = #{add}" puts "#{a} - #{b} = #{sub}" puts "#{a} × #{b} = #{mul}" puts "#{a} ÷ #{b} = #{div}" # 分数 → 小数 puts Rational(7, 8).to_f # 0.875
第五节

常见问题

Q & A
我输入“1/2”它算成小数了,我想保留分数形式怎么办?

本工具默认对每个分数先化简再显示结果,但当你进行加减乘除运算时,结果区会同时给出最简分数和小数两种形式。如果你只想要分数结果,直接看结果区里分数那行就行;如果结果区只显示了小数,说明你输入的表达式里没有运算符号(比如只输了一个分数),工具默认把它当纯小数转换处理。此时你可以改成“1/2 + 0”之类带运算的输入,分数形式就会出来。

为什么我输入 1/3+1/3 它给我 2/3,但换成 1/3+1/6 结果却是 1/2?

这是正常的化简结果。1/3+1/3=2/3,2/3 本身已经最简,所以直接显示。1/3+1/6=2/6+1/6=3/6,3/6 不是最简分数(分子分母有公约数 3),所以工具自动约分成了 1/2。所有分数运算结果都会经过最大公约数化简,保证你看到的是最简形式。如果你想要非化简的中间结果,目前版本不支持保留,但你可以先手动通分再输入。

我输入 0.5 它不认,必须写成 1/2 吗?

是的,本工具接受的是分数格式输入,不是小数。你需要用“分子/分母”的形式输入,比如 1/2 代表二分之一,3/4 代表四分之三。如果你手上只有小数,比如 0.75,可以手动换算成 3/4 再输入。工具虽然能把分数结果转成小数,但输入侧只认分数格式,不支持小数直接作为运算符。

分数化简的原理是什么?会四舍五入吗?

本工具使用欧几里得算法(辗转相除法)求分子分母的最大公约数,然后同时除以该公约数实现精确化简。整个过程是精确整数运算,不涉及浮点数、不四舍五入,只要分子分母不超出 JavaScript Number 安全整数范围(±2^53),结果就是绝对精确的。如果数值超出这个范围,建议手动分解后再输入。

我输入 0/5 它显示 0,但输入 5/0 报错了,是不是出 bug 了?

不是 bug。0/5 是合法分数,值为 0,工具正常显示。5/0 是除零错误,数学上没有定义(分母不能为 0),所以工具会直接报错提示。这是所有分数计算工具的标准行为,包括计算器、编程语言都一样。如果你遇到分母为 0 的表达式,请先检查输入是否正确。

这个工具能处理带括号的分数运算吗?比如 (1/2+1/3)×2

支持。本工具的输入框接受包含括号、加减乘除符号的混合分数表达式,比如 (1/2+1/3)*2 或 (1/3-1/4)/5 都可以正确计算。运算优先级遵循数学标准:先括号内,再乘除,后加减。如果你发现结果和预期不符,先检查括号是否成对、运算符号是否写全(比如乘号 * 不能省略)。

我在手机浏览器上打开,界面变形了还能用吗?

本工具是纯前端实现,界面自适应手机和电脑屏幕。在手机上输入框和按钮会自动缩放排列,不会遮挡。唯一需要注意的是手机键盘上“/”符号的位置——部分手机键盘需要切换到符号页才能找到斜杠。如果你找不到,可以长按小数点或数字键试试。计算过程全部在浏览器本地完成,无需联网。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭