原帖 | Jack | 2025-02-21 15:34 | 👍1 | 阅读约1
老师,是不是到红框这里时我们的retu_data已经是湿度的原始数据了。根据手册中的描述,我们直接给它除2^20就是湿度的百分比了,也就是一个介于0~1之间的数,然后我们想要得到的数据是直接能够显示再%之前的数据,所以我们需要给这个数乘100.然后由于要除2^20,由于这个数可以写成2的n次方,所以我们直接使用位运算的特性采用右移的方式去等价替换除法,这种替换会提升运算效率。到目前为止我们知道我们要对retu_data这个数据的处理是:需要右移20位、需要乘100 。
我们知道直接进行右移的话是一定会损失精度的,因为被移出的20位相当于直接舍弃掉了,这些都是精度损失,所以我们采用先放大(先乘)再进行右移的方式降低精度损失。
最后老师的代码中的处理方式是:先乘1000 再右移20,这里选择1000而不是100是不是因为放大的更大右移产生的损失更小,如果有更精细的精度要求的话这里可以乘10000再右移,后续除100就行了。
是的
乘1000右移 后面再除10,精度为小数点后一位。如果我们有需求要小数点后两位,就是乘10000右移,后面再除100?
是的

相关笔记