表达式计算器
在受限的 mathjs 沙箱中计算包含单位、函数、常量和小型矩阵的数学表达式。输入 5 cm + 2 inch to mm、60 km/h to m/s 或 det([[1, 2], [3, 4]]) 这样的表达式,即可获得按你选择的精度四舍五入的结果。表达式无法定义变量或函数,也无法访问数学库以外的内容,因此可以安全地处理任何输入。适用于单位换算、工程检查和快速计算。
常见问题
可以输入什么?
数字、运算符 + - * / ^ 和 %、mod、factorial(n)、括号、cm、kg、km/h 或 degC 等单位、pi、e、tau、phi 和 i 等常量,以及 sqrt、sin、log、round、mean 或 det 等函数。支持隐式乘法,因此 2 pi 和 3 kg 都能正确识别。输入最多可包含 2000 个字符。
单位换算如何进行?
在数字后附上单位,并使用 to 或 in 进行换算,例如 3 ft to m 或 100 degF to degC。单位可以通过算术运算组合,因此 1 kg * 9.81 m/s^2 得到 9.81 N,2 cm * 3 cm 得到 6 cm^2。若相加的单位不兼容(例如 kg 和 m),则会返回错误。
可以使用矩阵和向量吗?
可以,用方括号书写,例如 [1, 2, 3] 或 [[1, 2], [3, 4]];每行最多可有 10 个元素,最多支持两层嵌套。可使用 det、inv、transpose、trace、dot、cross 和 norm 等函数,也支持 .* 等逐元素运算符。矩阵结果会以对齐的区块形式显示。
为了安全,哪些功能已禁用?
变量、赋值、函数定义、字符串、对象、范围、索引和属性访问会在计算前被拒绝。按照 mathjs 的安全指南,import、createUnit、evaluate、parse、simplify 和 derivative 均已禁用,并且只允许调用白名单中的数学函数。表达式中的任何内容都无法访问 JavaScript 或服务器。
三角函数使用角度还是弧度?
普通数字按弧度处理,因此 sin(pi / 2) 为 1。要使用角度,请添加 deg 单位,例如 sin(30 deg) 或 cos(45 deg)。Scientific Calculator 提供角度模式,可将普通数字按角度处理。
百分号有什么作用?
数字后面的百分号表示将该数字除以 100,因此 50% 等于 0.5,而 200 * 15% 等于 30。加号或减号后面的百分数以左侧数值为基准,因此 100 + 10% 等于 110。在两个数字之间使用时(例如 10 % 3),它表示取模运算,结果为余数 1。你也可以写作 10 mod 3。
结果如何舍入?
数值、带单位的值和复数部分会按你选择的小数位数进行舍入,默认 6 位,最多 15 位,并去掉末尾的零。小到无法按该精度显示的值会以科学记数法表示。除以零会返回 Infinity,0 / 0 则报告为未定义。
可以一次输入多个表达式吗?
不可以,每次计算只能求值一个表达式,分号或额外行都会被拒绝。请用算术运算组合各部分,或依次运行它们。这样可以清楚地将每个结果与对应表达式关联起来。
有时间限制吗?
每次求值都会在隔离的 worker 中运行,时间限制为 3 秒,同时还受长度、嵌套深度和矩阵大小限制。组合数和排列数的 n 最大为 10,000。表达式触及限制时会显示清晰的提示,不会拖慢页面。
支持复数吗?
支持。可以用 i 表示虚数单位,例如 (2 + 3i) * (1 - i);sqrt(-4) 等函数也会返回 2i 这样的复数结果。re、im、arg 和 conj 可提取复数结果的各个部分。结果显示为 a + bi。