定点数与无 FPU 环境
更新时间:2026-10-01。配合 23-floating-point 与裸机系列,资源受限 MCU 常要避开浮点。
一、Q 格式
定点数把整数的低 n 位当作小数(如 Q16:value = real × 2^16)。加减要求小数位对齐;乘法 a*b 的 Q 位相加,需右移回原定标并防溢出(用更宽类型);除法前先左移保证精度。
二、范围与精度权衡
选 Q 格式前算清最大整数范围和最小分辨率;中间结果用 int64 防溢出;长期递推注意舍入误差累积。无 FPU 时软浮点会引入大库和慢运算,定点更省代码/周期。

三、常见坑
- 乘法后忘记移位/溢出。
- 精度不足累积误差。
- 混用不同定标变量。
小结
总结
无 FPU(或禁用浮点)的 MCU 用定点数做小数:把整数的低 n 位当小数位(Qm.n 定标,如 Q16=real×2^16),加减前要对齐小数位,乘法后 Q 位相加、需右移回原定标并用 int64 等更宽类型防溢出,除法先左移保精度;动手前先算清整数范围与最小分辨率、长期递推警惕舍入误差累积,并对照浮点验证——相比软浮点的大库和慢运算,定标统一、中间扩宽的定点运算更省代码与周期。