Victor Poughon 近日上线了一个名为 Interval Calculator 的网页工具,并同步开源其代码与底层引擎 not-so-float。它表面上是个计算器,真正做的却不是“算一个数”,而是“算一组可能的数”:输入和输出都可以是区间,甚至是多个不连续区间的并集。
这件事重要,不是因为它会取代你手机里的计算器,而是因为它把数值计算里最容易被忽略的部分公开了——误差、不确定性、以及传统浮点运算在边界条件下的失真。它不重要的地方也很明确:这不是一个立刻会进入大众办公流的软件,更像是一个把严肃数学思想做成可交互网页的技术样品。
Victor Poughon 做的,不是“更复杂的计算器”
这个工具实现的是“区间并集算术”(Interval Union Arithmetic)。普通区间算术并不新鲜,很多科研和工程软件早就用它处理误差传播;Poughon 的不同之处在于,他支持的是“区间的并集”,所以像 2 / [-2, 1] 这种传统计算器会让人皱眉的表达式,在这里能得到 [-∞, -1] U [2, +∞]。这不是炫技,而是数学上更诚实的表达。
原作者给出的另一个例子更能说明问题:0.1 + 0.2 在“全精度”模式下不会假装等于某个单一十进制数,而是输出一个保证包含真实值的区间。这背后依赖的是 IEEE 754 双精度浮点的外向舍入。我的判断是,这类设计最有价值的一点,不是提升了多少计算速度,而是把“结果可信到什么程度”说清楚了。很多工具只给答案,不给边界;这个项目反过来,把边界当成答案的一部分。
它为什么在今天依然有现实意义
浏览器里做数学工具并不稀奇,Desmos、Wolfram Alpha、GeoGebra 都比这个项目成熟得多。但这些产品的主战场分别是绘图、符号计算和教学交互,Poughon 这个工具更接近“数值可靠性演示器”。它的受众不大,却切中一个老问题:在金融建模、控制系统、图形学、物理仿真乃至 AI 推理的底层实现里,浮点误差都不是纸面问题。
一个容易被忽视的背景是,过去十几年,行业对“高性能数值计算”的关注远高于“可解释的数值边界”。大家更愿意讨论 CUDA、向量化、Tensor Core,较少讨论一个结果是否稳健地覆盖真实值。区间方法当然不是新发明,学术界研究很多,但真正做成普通开发者随手可试的网页工具并不多。尤其是“支持除以包含 0 的区间仍然闭合”这一点,确实比许多基础区间计算器更进一步。
公开说法是“这是一个计算器”;行业现实是,这更像一堂关于数值诚实性的公开课。
谁会用得上,谁不会
如果你是下面这些人,这个工具带来的变化是很具体的:
- 科研人员:可以快速验证一个表达式在输入存在误差时,输出范围会怎么扩张。
- 数值软件开发者:适合拿来检查边界条件,尤其是分母穿过 0、三角函数跨越奇点这类场景。
- 教学场景:比单纯讲“浮点数有误差”更直观,学生能直接看到
tan([pi/3, 2*pi/3])为什么会裂成两个区间。 - 普通用户:大概率不会把它当日常计算器,因为它故意不追求“一个简单答案”。
和同类工具相比,它的优势与短板也都很明显:
| 维度 | Interval Calculator | 普通网页计算器 | Wolfram Alpha/数学软件 |
|---|---|---|---|
| 不确定性表达 | 强,支持区间并集 | 几乎没有 | 有,但通常不以此为核心 |
| 学习门槛 | 偏高,要理解区间语法 | 低 | 中到高 |
| 边界条件处理 | 很强,尤其是除零附近 | 常直接报错或给单值近似 | 视具体模块而定 |
| 工程可用性 | 适合验证与教学 | 适合日常算数 | 适合更复杂建模 |
我更愿意把它看作“工程师的辅助尺子”,而不是替代型产品。它帮你判断一个结果有没有可能出错,却不直接帮你完成完整业务流程。
开源项目的价值,也有天花板
Poughon 在页面里很坦率地写了“我确信还有 bug”,并列出了后续计划,包括拆分全精度模式、增加 ans 变量、支持交集运算、改进 U 的优先级、支持空并集输入。这种坦率反而提升了项目可信度:它显然还在早期,不是一个经过大规模工业验证的数值库。
真正的限制也在这里。首先,它运行在 JavaScript 的 number 之上,本质仍受 IEEE 754 双精度约束,只是通过外向舍入把误差包起来,而不是消灭误差。其次,区间方法有个老毛病:表达式复杂后,结果往往会变“过宽”,实用性可能下降。再者,浏览器演示工具和工业级验证链条之间,隔着测试覆盖、性能优化、形式化证明和团队采纳成本,不是一两个 GitHub star 能跨过去的。
如果你是企业里的技术负责人,最现实的问题不是“这个工具酷不酷”,而是:要不要把它纳入测试流程,给仿真、风控或底层算法团队做边界验证。如果你是个人开发者,反而更容易马上受益——用它检查那些你一直默认“应该没问题”的公式,往往会第一次看见问题究竟出在哪。
