float可以表示的最大整数,导致的一系列原地去世错误
在敲这几行字的时候,我已经要’‘吐血’'了,原来折磨我无数个日日夜夜的bug竟是float可以表示的最大数范围限制
事情是这样的,2020年7月6号晚23:30,当胡某收到了项目反馈后,开始自己的找bug之旅;
第一张采用cos计算,第二张采用cosf计算,结果第二张的波形出现了幅度衰减,似乎有点规律,于是乎,我以为程序存在一定的逻辑错误;
可是我把结果输出,发现了一个问题,为什么相同的数据,cos与cosf 的差距这么大呢? 难道我已经遇到了玄学?
一语惊醒梦中人!
原来我这里的弧度值已经超过了float所能表示的最大范围224+1=16777217,因此,会把这个数转换错误的当成一个负数来计算,反正不是我原本想要的结果.
好好学习一下float的存储方式
突然想出了上面那个地方的解决方法,因为余弦函数本身是一个周期函数,所以,把原本超过2pi的数对2pi求个余,似乎问题就得到解决了;
CSDN博客搬运 文章被收录于专栏
CSDN博客搬运