科学计算器是一个纯按钮的表达式求值器: 没有文本输入框, 没有键盘捕获, 表达式行的每个记号都来自 33 键的键盘 — 十个数字, 一个小数点, 加, 减, 乘, 除, 幂五个运算符, 常数 π 和 e, 十个函数按钮, 阶乘, 括号键, 清除, 退格和等号. 页面以 DEG 模式加载. 按等号会把该行改写成结果, 所以答案可以直接进入下一个运算. 每个值都由浏览器内的 Math 对象算出, 没有后端, 没有 API 调用. 从科学计算器开始, 保持 DEG 选中, 按 sin, ( ), 4, 5, ( ), =: 该行读作 0.7071067812.
键盘
33 个键排成五列网格. 上面三行是函数和编辑键: sin, cos, tan, π 和清除; asin, acos, atan, 退格和 ( ) 键; log, ln, sqrt, x! 和等号. 下面四行是数字和运算符: 7 8 9 配除号和幂, 4 5 6 配乘号和 e 常数, 1 2 3 配减号和加号, 最后一行是 0, 小数点和 abs. x! 键的标签带一个 x, 但它只插入 ! 记号, 且该记号绑定到前面输入的整数: 5, x!, = 打印 120. ( ) 键是括号的唯一来源, 它一次插入一个平衡的括号而不是成对插入 — 该行平衡时它打开一组, 前面的参数完整时它闭合一组, 所以函数调用和嵌套都能只靠键盘输入.
DEG 和 RAD
切换按钮在页面加载时读作 DEG, 模式一次改变两件事. 三个直接函数按度读参数: sin(45) 是 0.7071067812, cos(60) 是 0.5, tan(45) 是 1. RAD 模式下同样的三个调用按弧度读参数, sin(45) 变成 0.8509035245. 三个反函数按匹配的单元打印结果: asin(1) 在 DEG 下是 90, 在 RAD 下是 1.5707963268, atan(1) 在 DEG 下是 45. 切换模式不改写该行, 它只改变下一次等号如何读该行, 所以同一行 sin(45) 在两种模式下求值出两个不同的数.
哪个对数是哪个
log 键是十进制对数, ln 键是自然对数. log(100) 打印 2, 因为 10 的 2 次方是 100; ln(e) 打印 1, 因为 e 常数和自然对数互为反函数. 没有底数选择器: 以 2 为底的对数得用现成的两个底自己搭, 即 log(x) 除以 log(2).
幂, 常数和阶乘
^ 键是幂运算符. 2, ^, 1, 0, = 打印 1024, 而打印的结果成为新的一行, 所以接着按 ^, 2, = 打印 1048576. π 键单独打印 3.1415926536, 2, ×, π, = 打印 6.2831853072, 因为非整数结果被修剪到十位小数. e 键是欧拉数, 2.7182818285. 阶乘只限整数: 5! 是 120, 0! 是 1, 17! 是 355687428096000, 20! 是 2432902008176640000; 100! 超出能打印成普通整数的范围, 以科学计数法 9.33262154439441e+157 出现.
分组和嵌套调用
因为 ( ) 键一次插入一个括号, 45 的正弦输入为 sin, ( ), 4, 5, ( ), 嵌套调用从内到外以同样的方式输入: 0 的余弦的正弦是 sin, ( ), cos, ( ), 0, ( ), ( ), 其中 0 之后的那次按键闭合内层 cos, 下一次按键闭合外层 sin. DEG 模式下这行嵌套求值出 0.0174524064. 分组控制优先级, 和纸上完全一致: ( ), 1, +, 2, ( ), ×, 3 打印 9, 而不加括号的 1, +, 2, ×, 3 打印 7.
结果和无效行
等号把整数打印成普通整数, 其余结果修剪到十位小数: 1÷3 打印 0.3333333333, 0.1+0.2 打印 0.3, sqrt(2) 打印 1.4142135624. 成为下一行的是打印出的字符串, 不是全精度值, 所以下一个运算读到的是修剪过的数, 修剪会显形: 1÷3 之后按 ×, 3, = 打印 0.9999999999, sqrt(2) 之后按 ^, 2, = 打印 2.0000000001. 无法求值的行会显示页面语言的表达式无效错误, 且该行留在显示屏上以便修正: 1÷0, asin(2), (-1)^0.5 和 2.5! 都会触发, 2π 也是, 因为求值器没有隐式乘法, 数字和常数之间必须按 × 键.
浮点角
DEG 模式下的 tan(90) 不报错: 它打印 16331239353195370. 90 的度到弧度换算在浮点里落在精确 π/2 之前一点点, 那里正切无定义, 所以正弦除以余弦返回一个大的有限值, 而不是失败. 超过 15 位的整数会丢尾: 123456789123456789 以 123456789123456780 出现, 因为表达式字符串保留了全部 19 位, 但求值把它解析成 64 位浮点数, 只保住大约 15 位.
它不是什么
科学计算器不是百分比工具: 一个数的百分比双向计算由百分比计算器完成, 百分比指南讲增减问题. 它也不是折扣计算器: 折后价和节省额由折扣计算器算. 而且它除该行之外不保存任何状态: 没有存储键, 没有历史, 没有保存的结果, 没有常数重复, 清除键一次性抹掉该行, 结果和错误.