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