gpt4 book ai didi

c - 如何将一个定点数除以一个小的 float ?

转载 作者:行者123 更新时间:2023-12-04 23:43:50 24 4
gpt4 key购买 nike

我需要将一组 5U11 数字除以 6.02 并且更愿意这样做而不转换为 float 和返回。

5U11表示16位无符号数,低11位表示小数部分。

6.02应该怎么表示,单次计算误差的上键是多少?

最佳答案

简单地缩放 100 就足够了。

uns16_t x_5U11;
uns32_t acc;
acc = x_5U11;
acc *= 100;
acc += 301; // for round to nearest rather than truncation.
acc /= 602;

错误范围:x_5U11 中的 1/2 LSbit。

--

如果速度最重要,那么按照@alastai 的建议执行乘法和除法(通过移位)是可行的方法。通过适当的舍入,答案应该在 +/- 1 LSBit 之内。

如果精度比此方法最重要,则提供 +/- 1/2 LSbit(最佳可能答案)。

[编辑] 感谢@Ingo Leonhardt 指出我有一个倒置的解决方案。

关于c - 如何将一个定点数除以一个小的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22018953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com