科学计算器
科学表达式计算器,幂与阶乘、三角与对数、角度弧度切换、Ans 记忆与一行一式批量求值
① 表达式求值
三个约定:「%」就是把数字除以 100,所以 200×10% = 20,要「涨 10%」请写 200*(1+10%);相邻的量会自动相乘,2pi、3(4+1)、(2)(3) 都能算;函数括号可省,sin30 等同于 sin(30)。数字里的千分位逗号可用,如 1,000/8。
② 历史记录(点击任意一条可回到输入框)
还没有计算记录,算一次就会出现在这里
③ 一批表达式一起算
批量计算沿用 ① 里的角度单位与保留位数设置;Ans 在批量模式下取上一次单条计算的结果。每行必须是完整表达式,不能只写运算符。
工具介绍
普通计算器算不了 12!/(5!*7!),在线语言里的 eval 又不敢用。这个工具把表达式解析成词法与后缀式再求值,输入什么就算什么,并把每一步口径写清楚:
- 完整表达式求值:四则、括号、幂、阶乘、百分号、取余混写都可以,
2+3*4得 14,(2+3)*4得 20,(2+3)*sqrt(16)/2^3得 2.5 - 科学与工程写法:
1e3+1得 1001、2E-2得 0.02、1,000,000/8/7认千分位逗号得 17857.1428571 - 可以省括号与乘号:
2pi= 6.28318530718、3(4+1)= 15、sin30等同sin(30)、√9= 3、∛(-27)= -3 - 角度制与弧度制一键切换:DEG 下
sin(30)= 0.5、acos(0.5)= 60;切到 RAD 后sin(30)= -0.988031624093,反三角的输出单位也同步变化 - 结果的多重表达:同时给出千分位结果、双精度原始值、科学计数法、整数部分、小数位数、三种取整与最简分数近似
- Ans 与记忆键:Ans 引用上一次结果,存 MS / 取 MR / 清 MC 做分步运算,「把结果接进新表达式」可直接续算
- 历史记录:最近 20 条算式与结果,点任意一条回到输入框改数字重算
- 批量求值:一行一个表达式一起算,某一行出错不影响其他行,出错原因写在同行说明列
- 异常都讲原因:括号未闭合会说明还差几个右括号,
1/0、√-4、ln(0)、tan(90)、171!、(-8)^0.5各有对应的提示
使用场景
- 把长算式一次写清:组合数、等比数列求和、复利终值这类链式按键算不了的式子
- 验证公式:先手算再让工具复核,避免括号与优先级写错
- 批量核对一组数据:从表格或笔记里粘一批表达式逐行出结果
- 教学演示:解释幂右结合、负号与开方的优先级、角度制与弧度制的差别
- 工程与统计:双曲函数、以 2 为底的对数、取余与阶乘混合使用
支持的写法
| 写法 | 含义 | 实测结果 |
|---|---|---|
| 2+3*4 | 先乘后加 | 14 |
| 2^10 与 2**10 | 幂,两种写法等价 | 1024 |
| 2^3^2 | 幂右结合,先算 3^2 | 512(不是 64) |
| -2^2 | 幂优先于一元负号 | -4,写 (-2)^2 才是 4 |
| 5! 与 fact(5) | 阶乘 | 120 |
| 10% 与 200*(1+10%) | 百分号即除以 100 | 0.1 与 220 |
| 100 mod 7 | 取余 | 2 |
| 12!/(5!*7!) | 组合数直接写 | 792 |
| 3(4+1)、2pi、(2)(3) | 相邻的量自动相乘 | 15、6.28318530718、6 |
| 1,000/8 | 千分位逗号 | 125 |
| sin30 + 1 | 无括号函数只吃掉紧跟的那个数 | 1.5(不是 sin(31)) |
| ans*2 | 引用上一次结果 | 上一次为 21 时得 42 |
运算优先级由先到后
- 括号
( ):改变优先级最直接的方式,未闭合时会提示还差几个右括号 - 后缀运算
!%:紧贴前面的数,2^3!是 2^6 = 64 - 幂
^:右结合,比一元负号更紧 - 一元正负号
-3、+5:可以连续写,3 - -2= 5 - 乘、除、取余
*/mod:含隐式乘法,左结合 - 加、减
+-:最低,左结合,100-20-30= 50
函数与常数
| 类别 | 名称 | 已核对的例子 |
|---|---|---|
| 三角与反三角 | sin cos tan asin acos atan | DEG:cos(60)+sin(30) = 1、asin(0.5) = 30 |
| 双曲 | sinh cosh tanh | cosh(0) = 1、sinh(0) = 0 |
| 幂与根 | ^ ** sqrt √ cbrt ∛ | 9^(1/2) = 3、sqrt(144)+3^2 = 21 |
| 对数与指数 | ln log lg log10 log2 exp | log(1000)+ln(e) = 4、log2(1024) = 10 |
| 取整与符号 | abs round floor ceil sign | round(2.5)+floor(2.5)+ceil(2.5) = 8 |
| 阶乘与取余 | ! fact mod | 5!+3! = 126、10 mod 3 = 1 |
| 角度换算 | degrees radians | degrees(pi/3) = 60、radians(180) = pi |
| 常数 | pi π e phi φ tau | π = 3.14159265359、e = 2.71828182846、φ = 1.61803398875、tau = 6.28318530718 |
常见问题
- 为什么
-2^2等于 -4?数学里 −x² 表示 −(x²),幂比一元负号先算。想让负数自乘要写(-2)^2= 4;同一条规则也解释了2^3^2= 512 而不是 64 - 为什么结果 0.3,原始值却是 0.30000000000000004?这是双精度浮点的固有表示误差。自动模式取 12 位有效数字后再归一,把噪声压掉;
sqrt(2)*sqrt(8)显示 4 而原始值是 4.000000000000001,同一原因。要看真实误差请对照「原始值」那一行 - 角度制还是弧度制?默认角度制,
sin(30)= 0.5;选弧度制后 30 被当作 30 弧度,sin(30)= -0.988031624093。反三角函数的输出单位跟着走,acos(0.5)在角度制下是 60;degrees与radians这两个函数不受开关影响,始终按弧度定义换算 sin(pi)为什么不是 0?结果是1.224647e-16。π 只能用近似值表示,而正弦在 π 附近的变化率约为 −1,输入误差几乎原样变成输出误差。判断是否为 0 要设容差,而不是期待整数- 阶乘最大能算到几?170! =
7.257416e+306,已经贴近双精度上限约 1.8e308,171! 会直接报溢出;小数与负数阶乘不做(那需要 Gamma 函数与复数支持)。组合数这类整数比值可以在溢出前先相消,写成12!/(5!*7!)= 792 是安全的 - 百分号是什么口径?把数除以 100:
10%= 0.1,200×10%= 20。要「涨 10%」得写200*(1+10%)= 220;每月涨 10% 一年下来的总涨幅是(1+10%)^12-1= 2.13842837672,即 213.84% - 它会不会执行我输入的代码?不会。解析流程是先词法切分、再补隐式乘法、然后用调度场算法转成后缀式逐条求值,全程没有
eval也没有动态构造函数,字母只认已登记的函数名与常数,其余一律拒绝并指出位置 - 哪些写法不支持?不支持多参数函数(要底数就写
log2(8)或log(8)/log(2))、不支持变量赋值与自定义函数、不处理复数与无穷符号、不支持求和连乘记号;1e3会被识别为 1000,想要 1×e×3 请写1*e*3
配套工具:要把结果写回精确分数做四则运算用 分数计算,算占比与涨跌幅用 百分比计算,把 1000*(1+4.7%)^7 = 1379.19848604 这类终值展开成逐年明细用 复利计算器,换算量纲用 单位换算。表达式与结果都只在浏览器里处理,不上传服务器。