1

我正在嵌入式处理器上运行计算,其中涉及如下浮点操作:

a = (float)23 / (float)3;  // a = 7.666....7

这是一个很长的计算,我的应用程序还可以,但存在一定的舍入误差;我的意思是 7.67 或 7.66 无关紧要。math.h有没有办法减少计算浮点数或告诉2 位数所花费的计算时间?

知道怎么做吗?

PS:现在我知道很多人会建议使用定点,但我有具体的要求。

4

2 回答 2

2

精度由数据类型决定,float 和 double 等常见类型具有无法更改的固定精度,但是libfixmath等库可以让您执行快速的非整数数学运算(在这种情况下使用int32_t

于 2013-07-31T07:58:43.270 回答
1

没有什么可以“告诉” math.h(在这方面);float没有精度选项。

如果您想要较少的计算密集型计算,则必须使用其他类型或方法。

您已经提到了最佳候选者:定点。但是,由于不明原因,您说您不能使用它。

另一个想法是将您的计算扩大例如 10,000 倍,并将所有内容保持为int(或longer)。然后,仅在需要时缩小float。但是,当然,如果你能做到这一点,这取决于你的问题。

于 2013-07-31T05:40:28.110 回答