
0.前言
帧同步技术的难点之一就是需要客户端计算结果的一致性。其中浮点数的运算在一些情况下是会产生不同的结果,所以这篇文章主要是来探究浮点数相关的问题。
1.导致浮点数不确定的原因
- cpu
- 编译器
- 操作系统
- 操作系统的位数
- IEEE 754浮点数算数的标准
- 汇编指令集
总结来说,主要就是由于硬件环境和系统平台的不一致导致了浮点数会计算出不一样的结果。
关于为什么这些不一样就会导致计算结果不一样,可以参考一下这个。
[图文]浮点运算结果的一致性问题 - 百度文库
用人话来说呢,计算机并不能天然处理小数,对于小数的计算,不同的编译器、处理器使用了不用的计算标准和优化方式,导致了小数的精度出现了差异。
2.浮点数解决方案
- 定点数学库
- 查表计算
- 放大截断法
定点数学库
首先要搞明白什么是浮点数,什么是定点数。
浮点:小数点非固定的数,可表示数据范围较广,整数小数都可以表示,包含float,double。
定点:小数点固定,整数小数都可以表示。int本质是小数点位于末尾的32位定点数而已。
具体可以参考这篇文章,顺便可以理解一下