2013-07-31 68 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