科学计算器
三角/对数/阶乘/进制/内存键
表达式求值
粘贴或输入完整数学表达式 · 支持 sin(30) + cos(60) × √2 /
2^10 - 5! / log(100) / log(2) 等
支持常量 π e φ c h G N_A;函数 sin cos tan asin... ln log log2 sqrt cbrt abs exp floor ceil round sign
进制转换 · DEC / HEX / OCT / BIN
任一行输入即实时同步其他三行 · 最大支持
Number.MAX_SAFE_INTEGER (2⁵³-1) · 位宽显示供位运算参考
统计分析 · 均值 / 中位数 / 标准差
输入数据集 · 支持空格 / 逗号 / 换行 / 分号分隔 · 自动忽略非数字字符
方程求解
单位换算
常量库 · 点击载入到计算器
历史记录
暂无记录 · 计算后自动存入,点击可载入
键盘 / 使用提示
键盘:0-9 . + - * / ( ) % ^ 直接输入 ·
Enter 或 = 计算 ·
Backspace 删除一位 · Esc 清空 ·
表达式面板用 Ctrl+Enter
角度:DEG 输入 sin(30) = 0.5,
RAD 输入 sin(π/6) = 0.5,
GRAD 输入 sin(33.33) ≈ 0.5。
切换模式立即重算当前表达式
第二功能 2nd:按 2nd 切换替代标签
(sin→sin⁻¹ / log→10ˣ / √→∛ / x²→x³ / x!→1/x 等)
内存:MS 存入 / MR 读取 /
M+ 累加 / M- 减 / MC 清空
常量:常量库面板内点击即载入;表达式面板支持
π e φ c h G N_A 等命名常量直接参与运算
进制:四进制实时互转;任一输入框输入即同步其他三个。
最大支持 2⁵³ - 1(JS 安全整数),超出会高亮提示
统计:粘贴任意分隔的数字串均可(空格/逗号/分号/换行/中文逗号), 自动跳过非数字字符。同时计算样本与总体两套方差/标准差
方程:四类常用方程一键求解,含复根;二元一次走克拉默法则
单位:9 大类 60+ 单位实时换算;温度走零点偏移公式
历史:最近 50 条本地存储;点击载入到主表达式;支持导出 CSV / TXT
关于本工具
了解工具定位 · 使用场景 · 对比优势
使用场景
工程三角验算
现场施工员在放线时需要快速计算斜边长度、坡度角或三角函数值,手算容易出错且耗时。本工具直接输入角度或边长,秒出 sin/cos/tan 及反函数结果,支持度分秒格式,省去翻表查手册的麻烦,提高放线效率。
进制转换与位运算
嵌入式开发者在调试寄存器或配置位掩码时,频繁在二进制、十六进制和十进制之间切换。本工具一键转换进制并同步显示各进制结果,配合位与、位或、移位运算,让协议解析和寄存器配置不再反复心算。
组合数阶乘计算
概率统计课的学生在计算排列组合时,阶乘值动辄上万,手算极易越界或遗漏。本工具直接输入 n 和 r 输出组合数 C(n,r) 和排列数 P(n,r),阶乘结果精确到超大整数,避免中间计算溢出,让作业检查更放心。
对数回归拟合
数据分析师在处理指数增长型数据(如用户增长曲线)时,需要将原始数据取对数后做线性拟合。本工具提供常用对数 log₁₀ 和自然对数 ln,配合内存键保存中间结果,省去逐条复制到 Excel 的步骤,加速建模流程。
复利终值速算
个人投资者在比较不同理财产品的年化收益率时,需要计算本金在 N 年后的终值。本工具利用指数和对数功能,输入本金、年化利率和年限,直接输出复利终值,并可保存多组参数对比,辅助投资决策。
对比矩阵本工具 vs 竞品 vs 传统方法
| 维度 | 本工具 (jisuanqi.tl654.com) | Desmos (desmos.com) | 系统自带计算器 (Windows/macOS) |
|---|---|---|---|
| 数据隐私 | 纯浏览器计算,无网络请求,数据不离开设备 | 需加载在线脚本,部分操作可能触发云绘图请求 | 纯本地计算,无网络请求 |
| 离线可用 | 页面加载后完全离线可用 | 需联网加载核心库,离线功能受限 | 完全离线可用 |
| 进制转换 | 支持二进制/八进制/十进制/十六进制互转,带内存键 | 不支持进制转换 | 程序员模式支持进制转换,但无内存键 |
| 内存键功能 | 支持 M+/M-/MR/MC 内存键,可存储中间结果 | 支持变量赋值 (x=5),但无传统内存键 | 标准模式无内存键;程序员模式无内存键 |
| 三角函数单位 | 支持度/弧度切换,结果即时刷新 | 默认为弧度,需手动输入 deg() 转换 | 度/弧度可切换,但操作路径较深 |
| 输入方式 | 键盘直接输入,支持括号嵌套 | 虚拟键盘 + 物理键盘,支持 LaTeX 输入 | 鼠标点击按钮为主,效率较低 |
| 平台覆盖 | 任何现代浏览器 (桌面/移动端) | 桌面浏览器为主,移动端适配一般 | 仅限 Windows/macOS 桌面系统 |
| 功能复杂度 | 聚焦科学计算核心功能,无冗余功能 | 强项在图形绘制,科学计算需配合函数输入 | 标准/科学/程序员模式分离,切换繁琐 |
使用指南
上手步骤 · 输入输出 · 避坑提示
输入输出示例7 个典型场景,覆盖常规、边界与易错
| 输入 | 输出 | 说明 |
|---|---|---|
| sin(30) | 0.5 | 典型场景:30° 正弦值,结果应为精确 0.5 |
| log(100) | 2 | 典型场景:常用对数,10²=100 的逆运算 |
| 10! | 3628800 | 典型场景:10 的阶乘,常见组合数计算 |
| 0xFF | 255 | 边界 case:十六进制最大值 FF 转十进制 |
| tan(90) | Error: 无穷大 | 边界 case:90° 正切无定义,应返回错误 |
| 0! | 1 | 易错 case:0 的阶乘定义为 1,非 0 |
| log(0) | Error: 无定义 | 易错 case:对数真数必须 > 0,0 无意义 |
常见错误对照8 个常踩的坑 · 错误 → 修复
1. 三角函数参数单位混淆
sin(90) 期望得到 1sin(90°) 或 sin(π/2) 得到 1该工具默认使用弧度制(radian),90 弧度 ≠ 90 度。输入角度需显式转换或使用角度模式(若支持)。
2. 对数底数省略导致歧义
log(100) 期望得到 2(常用对数)log10(100) 或 log(100, 10) 得到 2数学中 log 默认底数有歧义:工程常用 10,数学常用 e。该工具需显式指定底数,否则可能为自然对数。
3. 阶乘运算符优先级误解
2+3! 期望得到 (2+3)! = 1202+3! = 2+6 = 8阶乘是单目运算符,优先级高于加减。正确计算为 3! = 6,再加 2。需加括号改变顺序:(2+3)!。
4. 进制转换时前缀缺失
将 0x1A 转十进制时输入 1A输入 0x1A 或选择十六进制模式后输入 1A无前缀的 1A 会被解析为变量名或非法表达式。十六进制数必须带 0x 前缀,或在进制模式下输入。
5. 内存键(M+)覆盖未清空
连续计算:10+5 M+ → 20+5 M+ 后按 MR 得到 25每次新计算前按 MC 清空内存,或确认前一次结果已使用M+ 是累加模式,第二次 M+ 会把 25 加到第一次的 15 上,得到 40 而非 25。
6. 科学计数法指数符号错误
输入 1e-3 时写成 1e-3(用全角减号)使用半角连字符:1e-3全角减号(U+2212)或全角连字符(U+FF0D)不被解析为负号,导致语法错误。
7. 大数阶乘溢出误解
计算 100! 后直接复制结果使用确认工具返回的是近似科学记数法(如 9.3326e157)而非精确整数100! 有 158 位十进制数,超出 JS Number 安全整数范围(2^53),工具可能返回浮点近似值。
8. 括号不匹配导致解析失败
输入 (3+4*(2-1) 缺少右括号输入 (3+4*(2-1)) 或使用自动补全功能(若支持)括号不匹配时解析器无法确定运算顺序,返回语法错误。建议输入时逐层检查括号成对。
工作原理
公式推导 · 流程图解 · 依据出处
核心公式
n! = n × (n-1) × (n-2) × ... × 1
变量说明
n— 非负整数,阶乘的底数n!— n 的阶乘,即 1 到 n 的连乘积
示例
计算 5!:5 × 4 × 3 × 2 × 1 = 120。输入 5 后点击阶乘按钮,结果输出 120。
适用范围
适用于非负整数 n(0 ≤ n ≤ 170),n=0 时 0!=1。n>170 时结果超出双精度浮点数范围(约 1e308),工具返回 Infinity。
原理图
开发者集成
3 种主流语言 · 复制即用
import math
# 三角函数(弧度制)
angle_deg = 45
angle_rad = math.radians(angle_deg)
sin_val = math.sin(angle_rad)
cos_val = math.cos(angle_rad)
tan_val = math.tan(angle_rad)
print(f"sin({angle_deg}°) = {sin_val:.4f}") # 0.7071
print(f"cos({angle_deg}°) = {cos_val:.4f}") # 0.7071
print(f"tan({angle_deg}°) = {tan_val:.4f}") # 1.0000
# 对数
print(f"ln(100) = {math.log(100):.4f}") # 4.6052
print(f"log10(100) = {math.log10(100):.4f}") # 2.0000
print(f"log2(8) = {math.log2(8):.4f}") # 3.0000
# 阶乘
n = 5
print(f"{n}! = {math.factorial(n)}") # 120
# 进制转换
num = 42
print(f"十进制 {num} → 二进制 {bin(num)}") # 0b101010
print(f"十进制 {num} → 八进制 {oct(num)}") # 0o52
print(f"十进制 {num} → 十六进制 {hex(num)}") # 0x2a
# 内存键(取整、绝对值)
print(f"floor(3.7) = {math.floor(3.7)}") # 3
print(f"ceil(3.2) = {math.ceil(3.2)}") # 4
print(f"abs(-5) = {abs(-5)}") # 5package main
import (
"fmt"
"math"
"strconv"
)
func main() {
// 三角函数(弧度制)
angleDeg := 45.0
angleRad := angleDeg * math.Pi / 180
fmt.Printf("sin(%.0f°) = %.4f\n", angleDeg, math.Sin(angleRad)) // 0.7071
fmt.Printf("cos(%.0f°) = %.4f\n", angleDeg, math.Cos(angleRad)) // 0.7071
fmt.Printf("tan(%.0f°) = %.4f\n", angleDeg, math.Tan(angleRad)) // 1.0000
// 对数
fmt.Printf("ln(100) = %.4f\n", math.Log(100)) // 4.6052
fmt.Printf("log10(100) = %.4f\n", math.Log10(100)) // 2.0000
// 阶乘(Go 无内置阶乘,手动实现)
n := 5
fact := 1
for i := 2; i <= n; i++ {
fact *= i
}
fmt.Printf("%d! = %d\n", n, fact) // 120
// 进制转换
num := 42
fmt.Printf("十进制 %d → 二进制 %s\n", num, strconv.FormatInt(int64(num), 2)) // 101010
fmt.Printf("十进制 %d → 八进制 %s\n", num, strconv.FormatInt(int64(num), 8)) // 52
fmt.Printf("十进制 %d → 十六进制 %s\n", num, strconv.FormatInt(int64(num), 16)) // 2a
// 内存键(取整、绝对值)
fmt.Printf("floor(3.7) = %.0f\n", math.Floor(3.7)) // 3
fmt.Printf("ceil(3.2) = %.0f\n", math.Ceil(3.2)) // 4
fmt.Printf("abs(-5) = %d\n", int(math.Abs(-5))) // 5
}// 三角函数(弧度制)
const angleDeg = 45;
const angleRad = angleDeg * Math.PI / 180;
console.log(`sin(${angleDeg}°) = ${Math.sin(angleRad).toFixed(4)}`); // 0.7071
console.log(`cos(${angleDeg}°) = ${Math.cos(angleRad).toFixed(4)}`); // 0.7071
console.log(`tan(${angleDeg}°) = ${Math.tan(angleRad).toFixed(4)}`); // 1.0000
// 对数
console.log(`ln(100) = ${Math.log(100).toFixed(4)}`); // 4.6052
console.log(`log10(100) = ${Math.log10(100).toFixed(4)}`); // 2.0000
console.log(`log2(8) = ${Math.log2(8).toFixed(4)}`); // 3.0000
// 阶乘
function factorial(n) {
if (n < 0) return NaN;
if (n <= 1) return 1;
return n * factorial(n - 1);
}
console.log(`5! = ${factorial(5)}`); // 120
// 进制转换
const num = 42;
console.log(`十进制 ${num} → 二进制 ${num.toString(2)}`); // 101010
console.log(`十进制 ${num} → 八进制 ${num.toString(8)}`); // 52
console.log(`十进制 ${num} → 十六进制 ${num.toString(16)}`); // 2a
// 内存键(取整、绝对值)
console.log(`floor(3.7) = ${Math.floor(3.7)}`); // 3
console.log(`ceil(3.2) = ${Math.ceil(3.2)}`); // 4
console.log(`abs(-5) = ${Math.abs(-5)}`); // 5常见问题
8 个高频疑问