计算工具 · 数学计算

高精度大数

任意位数加减乘除/幂/阶乘

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 115 次使用
自写安全解析器(零 eval):词法 → AST → BigInt 求值,仅识别整数运算。
示例 17 / 5 取整商、17 % 5 取余、20! 阶乘、 modpow(2, 1000, 7) 模幂、gcd(48, 36)、lcm(4, 6)。
A + B —
大数进制视图精确结果 ↔ 十六进制 / 二进制 / 八进制 / 任意进制
—
经典示例一键载入
关于高精度大数为什么需要 BigInt

JavaScript 的 Number 是 64 位浮点,安全整数上限仅 2⁵³−1 = 9007199254740991(16 位)。超过即丢精度——9007199254740993 会被当成 …992。本工具一律用 BigInt 任意精度整数运算,无论多少位都精确无误差。

整除与取模:大数除法给出 商 q 与 余数 r,满足 A = q·B + r(向零取整,余数与被除数同号)。

幂 ^:大指数结果位数爆炸式增长(2¹⁰⁰⁰ 已 302 位),工具给完整整数 + 位数 + 科学计数近似。

模幂 modpow(a, b, m):用快速幂逐位平方,在指数极大时仍秒算 a^b mod m(RSA、哈希、密码学核心运算),绝不先算出天文数字再取模。

gcd / lcm:辗转相除求最大公约数;lcm(a,b) = a·b / gcd(a,b)。

就绪 · 全程 BigInt 任意精度,结果均为精确整数
第一节

关于本工具

About

算 100! 时,普通计算器溢出成 Infinity,Excel 只给科学计数法。这个工具直接返回精确的 158 位整数,加减乘除、幂运算、阶乘都支持任意位数。所有计算在浏览器内完成,输入的数字和结果不会离开本地——适合程序员验证大数算法、学生核对组合数习题、密码学爱好者手算大数模幂。

使用场景

壹

竞标报价复核

建筑公司投标前夜,预算员拿到三份分包商的报价单,金额精确到分,总价需要加总后再乘以1.13的增值税系数。Excel 表格因为单元格格式问题,加总时对超长数字自动四舍五入,导致总价差出好几万。用本工具逐项加法校验,再算一遍含税总价,确保投标书上的数字和分包商原始报价完全一致,避免因计算误差被废标。

贰

科研数据校验

生物信息学研究生跑完基因组比对程序,输出了一串 150 位的计数值,怀疑是程序 bug 导致整数溢出。把原始比对结果和程序输出的计数值分别输入本工具做减法,差值为零则说明程序内部运算正确,数值本身可信。如果差不为零,则需排查比对流程的参数设置,而不是怀疑硬件故障。

叁

合约利息计算

民间借贷纠纷中,出借人主张按年利率 24% 计算 5 年 7 个月的利息,本金是 836,492.17 元。普通计算器只能算整数年,且月利率四舍五入后误差累积。用本工具先把年利率换算成日利率(保留 10 位小数),再乘以实际天数(5×365+7×30),最终利息精确到分,作为诉讼材料附件提交法庭。

肆

版税分成核对

独立作者收到出版社的版税结算单,上面写着「本期销售 3,847 册,定价 68 元,版税率 8%,扣除 11% 代扣代缴个税」。用本工具先算总码洋(68×3847),再算版税总额(结果×0.08),最后算税后金额(结果×0.89)。所有中间结果都保留完整小数,与出版社给出的数字逐位比对,发现对方把「代扣代缴」重复计算了一次。

伍

密码学作业验证

计算机专业学生做 RSA 算法课后作业,手动计算 7^100 mod 143。手算过程容易在中间步骤出错,且普通计算器幂运算超过 10^15 就显示科学计数法,丢失精度。把底数 7、指数 100、模数 143 分别输入本工具,直接得到模幂结果,和自己手算的中间步骤对照,定位到第 6 步的乘法进位错误。

陆

年金精算试算

保险精算师为 45 岁客户设计补充养老金方案,需要计算「每年年初缴 12 万,连续缴 15 年,60 岁后每月领 8 千,领 20 年」的现金流现值。涉及 35 个不同时间点的复利折现,每个折现因子都要保留 10 位以上小数,否则累计误差会改变缴费与领取的平衡点。用本工具逐期计算现值并加总,确认方案内部收益率是否达到客户要求的 3.5%。

对比矩阵

维度本工具竞品 A(Python Decimal)传统方法(手工/计算器)
位数限制无上限(受浏览器内存限制)受 Python 默认精度配置,可调但需代码普通计算器约 10-15 位,手工极易出错
速度即时反馈(纯前端计算)需运行脚本,启动环境慢极慢,大数运算需数分钟至数小时
离线可用完全离线(浏览器本地运行)需安装 Python 环境完全离线(纸笔/计算器)
隐私数据不出浏览器,不上传服务器本地运行,无网络传输完全本地,无隐私风险
功能范围加减乘除/幂/阶乘可扩展,但需编程实现仅基础四则运算,幂和阶乘需手动迭代
使用门槛打开网页即用,零配置需安装 Python、写代码、配置精度需具备数学计算能力,大数易出错
收费免费免费(开源)计算器成本低,手工免费
第二节

使用指南

Getting Started

使用步骤

  1. 1在数字输入框键入第一个操作数(支持整数或小数,不限位数),下方实时显示当前输入长度
  2. 2从运算符下拉菜单选择运算类型(加/减/乘/除/幂/阶乘),阶乘仅对正整数生效
  3. 3若选择加减乘除或幂,在第二个输入框键入第二个操作数;阶乘无需第二输入,结果自动计算
  4. 4点击「计算」按钮,结果区立即显示精确到每一位的完整结果,无科学计数法截断
  5. 5结果下方提供「复制结果」按钮,点击后结果文本自动存入剪贴板

输入输出示例

输入输出说明
12345678901234567890 + 98765432109876543210111111111011111111100常规:两个20位数加法,验证大数加法进位正确性
99999999999999999999 * 999999999999999999999999999999999999999800000000000000000001常规:20位全9自乘,验证大数乘法及末尾连续零处理
100!93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000边界:100的阶乘结果有158位,验证超大数阶乘性能与精度
0 ^ 01边界:0的0次幂在数学上未定义,本工具按常见约定返回1,需明确说明
2 ^ 100010715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376边界:2的1000次幂结果有302位,验证大数幂运算的位数上限
12345678901234567890 / 123456789010000000001易错:大数除法结果可能为整数,但用户易误以为会有小数,本工具仅输出整数商
-5 + 3-2易错:负数加法,验证工具是否支持负数输入及符号处理

常见错误对照

1.阶乘计算时把小数当作整数输入

✗ 错误5.5!
✓ 修复5! 或使用 Γ(5.5) 近似公式(本工具不支持小数阶乘)

阶乘 n! 仅定义于非负整数。小数输入会被截断或报错,因为底层实现未包含 Gamma 函数扩展。

2.幂运算中底数和指数顺序颠倒

✗ 错误想算 2^10,输入 10^2
✓ 修复2^10

幂运算 a^b 不满足交换律。2^10=1024,10^2=100,结果相差 10 倍以上。

3.减法结果出现负数时误认为工具出错

✗ 错误输入 5-10,看到 -5 以为算错了
✓ 修复5-10 = -5(正确)

高精度大数支持负数结果,负号是有效输出。用户常因习惯自然数运算而误判。

4.除法结果用小数表示时忽略循环节

✗ 错误1÷3 = 0.3333333333(手动截断)
✓ 修复1÷3 = 0.333...(工具会输出无限循环小数或分数形式)

高精度计算会保留足够位数,但不会自动标记循环节。用户若复制截断值再运算会引入舍入误差。

5.幂运算指数过大导致结果超出显示范围

✗ 错误2^10000 输入后页面无响应或显示 Infinity
✓ 修复先估算位数:2^10000 约 3010 位,确认工具支持后再输入

虽然工具支持大数,但浏览器内存和渲染有上限。超长结果可能导致页面卡顿或显示不全。

6.混合运算时忽略运算符优先级

✗ 错误输入 2+3×4 期望 20,实际得到 14
✓ 修复2+3×4 = 14(先乘后加);若要 20 应输入 (2+3)×4

工具遵循标准数学优先级(乘除高于加减)。不熟悉运算顺序的用户常得到意外结果。

7.阶乘输入包含空格或换行符

✗ 错误10 ! 或 10 !
✓ 修复10!

工具解析器要求运算符紧贴数字。空格或换行会被视为无效输入,导致无结果。

8.复制结果时遗漏负号或小数点

✗ 错误结果 -123.456,复制粘贴成 123456
✓ 修复直接点击结果区复制按钮(如有),或手动选中完整字符串

高精度结果包含符号和小数点,手动框选容易漏掉首尾字符,后续计算全错。

第三节

工作原理

How It Works

核心公式

n! = n × (n-1) × (n-2) × … × 1

变量说明

  • n非负整数,阶乘的基数

示例

计算 20!:20×19×18×…×1 = 2,432,902,008,176,640,000,结果精确无舍入,支持任意大数(如 1000! 有 2568 位)。

输入大数(字符串)逐位拆分(数字数组)逐位运算(进位/借位)输出(字符串)幂/阶乘(循环乘法)中间结果(大数数组)输出(字符串)选择运算
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

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

from decimal import Decimal, getcontext getcontext().prec = 100 # 设置全局精度(小数位数) a = Decimal('12345678901234567890') b = Decimal('98765432109876543210') print(f"加法: {a + b}") print(f"减法: {a - b}") print(f"乘法: {a * b}") print(f"除法: {a / b}") # 自动高精度小数 print(f"幂: {a ** 3}") # 大整数幂 # 阶乘(Python 原生 int 自动支持任意大数) import math n = 100 print(f"{n}! = {math.factorial(n)}")
// 使用 BigInt 实现任意大整数运算(浏览器 / Node 均支持) const a = 12345678901234567890n; const b = 98765432109876543210n; console.log(`加法: ${a + b}`); console.log(`减法: ${a - b}`); console.log(`乘法: ${a * b}`); console.log(`除法: ${a / b}`); // 整数除法,截断小数 console.log(`幂: ${a ** 3n}`); // 阶乘(BigInt 版本) function factorial(n) { let result = 1n; for (let i = 2n; i <= n; i++) result *= i; return result; } console.log(`100! = ${factorial(100n)}`);
package main import ( "fmt" "math/big" ) func main() { a := new(big.Int) b := new(big.Int) a.SetString("12345678901234567890", 10) b.SetString("98765432109876543210", 10) // 加法 add := new(big.Int).Add(a, b) fmt.Println("加法:", add) // 减法 sub := new(big.Int).Sub(a, b) fmt.Println("减法:", sub) // 乘法 mul := new(big.Int).Mul(a, b) fmt.Println("乘法:", mul) // 除法 div := new(big.Int).Div(b, a) // b / a fmt.Println("除法:", div) // 幂 pow := new(big.Int).Exp(a, big.NewInt(3), nil) fmt.Println("幂:", pow) // 阶乘 n := big.NewInt(100) fact := new(big.Int).MulRange(1, n.Int64()) fmt.Println("100! =", fact) }
use num_bigint::BigInt; use num_traits::One; fn main() { let a: BigInt = "12345678901234567890".parse().unwrap(); let b: BigInt = "98765432109876543210".parse().unwrap(); println!("加法: {}", &a + &b); println!("减法: {}", &a - &b); println!("乘法: {}", &a * &b); println!("除法: {}", &b / &a); println!("幂: {}", a.pow(3u32)); // 阶乘 let n: u32 = 100; let mut fact = BigInt::one(); for i in 2..=n { fact *= i; } println!("100! = {}", fact); }
import java.math.BigInteger; public class BigNumDemo { public static void main(String[] args) { BigInteger a = new BigInteger("12345678901234567890"); BigInteger b = new BigInteger("98765432109876543210"); System.out.println("加法: " + a.add(b)); System.out.println("减法: " + a.subtract(b)); System.out.println("乘法: " + a.multiply(b)); System.out.println("除法: " + b.divide(a)); System.out.println("幂: " + a.pow(3)); // 阶乘 BigInteger fact = BigInteger.ONE; for (int i = 2; i <= 100; i++) { fact = fact.multiply(BigInteger.valueOf(i)); } System.out.println("100! = " + fact); } }
第五节

常见问题

Q & A
问我算 1000 的阶乘,结果能全显示出来吗?会不会变成科学计数法?+
答

本工具采用高精度算法,结果完全以十进制整数显示,不会自动转为科学计数法。1000 的阶乘有 2568 位,页面会完整列出每一位数字,可拖动滚动条查看。如果位数极多导致浏览器卡顿,建议分次计算或复制结果到文本编辑器查看。

问为什么我输入 0.1 + 0.2 结果不是 0.3?+
答

这是 JavaScript 浮点数精度问题导致的常见现象(0.1+0.2 实际为 0.30000000000000004)。本工具内部用字符串模拟十进制计算,而非二进制浮点数,因此 0.1+0.2 会精确返回 0.3。如果发现结果不符,请确认输入框内是否包含了空格或不可见字符,或尝试清空后重新输入。

问负数能算阶乘吗?+
答

阶乘运算只对非负整数定义,负数、小数均不支持。输入负数时工具会提示「输入必须是非负整数」。如果遇到组合数或概率计算中需要负参数的情况,建议改用其他专用数学工具。

问幂运算支持小数指数吗?比如 2 的 0.5 次方。+
答

本工具幂运算的指数目前仅支持整数(正、负、零均可)。2 的 0.5 次方(即开平方)无法直接计算,如需小数指数或非整数次幂,请使用科学计算器类工具。整数幂如 2^1000 可正常输出精确结果。

问我算 2 的 10000 次方,结果太长了,能不能只显示前几位?+
答

工具默认输出完整结果,不提供截断显示。如果结果长度超过浏览器可视区域,可用鼠标选中结果文本,右键复制后粘贴到记事本中查看。若计算过程中浏览器无响应,可能是数值过大(如 2^100000 有 30103 位),建议分步计算或降低指数。

问这个工具计算时会上传我的数据吗?断网能不能用?+
答

本工具完全在浏览器本地运行,所有计算由 JavaScript 执行,不会将任何输入数据发送到服务器。断网环境下依然可以正常使用,首次加载后无需联网。隐私方面与本地计算器一致,适合处理敏感数字。

问和 Windows 计算器比,这个工具有什么优势?+
答

Windows 计算器标准模式仅支持 32 位精度,科学模式对超大数(如 100!)会显示近似值或溢出。本工具专为任意位数设计,加减乘除无长度限制,幂和阶乘可处理数千位的整数结果。劣势是仅支持整数幂和小数运算,不支持三角函数、对数等函数。

问我输入了 9999999999999999 乘以 2,结果好像少了一位?+
答

这是输入框本身对数字长度的限制。浏览器 input 框对 16 位以上的整数会截断显示,但实际计算时会按完整输入处理。建议直接粘贴长数字,或确认输入框内显示的数字与粘贴内容一致。如果仍然怀疑精度,可先用加法验证(如连续加两次原数)。

问计算 100000 的阶乘,页面卡死了怎么办?+
答

100000 的阶乘有 456574 位,浏览器需要大量内存和 CPU 时间计算并渲染,低配设备可能崩溃。建议:1)先尝试 10000 的阶乘(35660 位)确认设备性能;2)关闭其他标签页释放内存;3)使用 Chrome 或 Edge 浏览器,避免使用 Safari。如果仍卡死,可改用专门的大数计算软件或命令行工具。

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

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭