我正在嵌入式处理器上运行计算,其中涉及如下浮点操作:
a = (float)23 / (float)3; // a = 7.666....7
这是一个很长的计算,我的应用程序还可以,但存在一定的舍入误差;我的意思是 7.67 或 7.66 无关紧要。math.h
有没有办法减少计算浮点数或告诉2 位数所花费的计算时间?
知道怎么做吗?
PS:现在我知道很多人会建议使用定点,但我有具体的要求。
我正在嵌入式处理器上运行计算,其中涉及如下浮点操作:
a = (float)23 / (float)3; // a = 7.666....7
这是一个很长的计算,我的应用程序还可以,但存在一定的舍入误差;我的意思是 7.67 或 7.66 无关紧要。math.h
有没有办法减少计算浮点数或告诉2 位数所花费的计算时间?
知道怎么做吗?
PS:现在我知道很多人会建议使用定点,但我有具体的要求。
精度由数据类型决定,float 和 double 等常见类型具有无法更改的固定精度,但是libfixmath等库可以让您执行快速的非整数数学运算(在这种情况下使用int32_t
)
没有什么可以“告诉” math.h
(在这方面);float
没有精度选项。
如果您想要较少的计算密集型计算,则必须使用其他类型或方法。
您已经提到了最佳候选者:定点。但是,由于不明原因,您说您不能使用它。
另一个想法是将您的计算扩大例如 10,000 倍,并将所有内容保持为int
(或long
er)。然后,仅在需要时缩小float
。但是,当然,如果你能做到这一点,这取决于你的问题。