0.1 微秒误差累积 100 小时,爱国者导弹系统因此拦截失败

Franc0Fernand0 · x · 2026-10-23

作者复盘了爱国者防空系统拦截飞毛腿导弹失败的经典浮点数案例:系统内部时钟每 0.1 秒计数一次,软件将计数乘以 0.1 存入 24 位寄存器。0.1 没有有限二进制表示,寄存器里的值被截断,每次偏差约 0.000000095 秒——单次无关紧要,但电池连续运行约 100 小时、累计 360 万次计数后,计算出的时间已偏差 0.34 秒,系统在错误的位置寻找来袭导弹。

作者借此引出 Polymathic Engineer 第 156 期关于浮点数运算的内容,涵盖浮点数的加法、乘法与比较,核心结论是:单步精度损失通常很小,但序列运算会让误差不断累积;代码每一行都按格式规范工作,系统依然会失败。

原文链接 →

「研究」频道最新

更多「研究」频道 AI 资讯 →