2013-07-31 67 views
1

我正在运行的嵌入式处理器上的计算涉及这样的浮子操作:计算浮到只有2位数字(未格式化/四舍五入小数点〜2后6位)

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

这是长计算,我的应用程序是确定的一定数量的舍入误差;我的意思是7.67或7.66无关紧要。有没有办法减少花在计算浮点数上的计算时间,或者告诉math.h需要2位数字?

任何想法如何做到这一点?

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

+0

你想单个计算运行_faster?_ – aaronman

+0

我有所有的事情发生在那里。不仅仅是一个部门,我还有乘法和补充。 – boffin

+1

不,你的代码只有一个部门,从你发布的内容 – aaronman

回答

1

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

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

你已经提到最好的候选人:定点。但是,由于模糊的原因,你说你不能使用它。

其他的想法是扩大你的计算,例如10,000倍,并保持一切为int(或long er)。然后,只在需要时缩小至float。但是,当然,这取决于你的问题,如果你能做到这一点。

+0

感谢您的回答。 – boffin

+0

嗯,我想听到更多的人告诉我他们的经历:-) – boffin

+0

@boffin谢谢!它可能有助于说明为什么你不能使用定点;-) –

2

精度由数据类型决定,普通类型如float和double具有不可更改的固定精度,但有像libfixmath这样的库可以执行快速非整数数学运算(在本例中使用int32_t