计算浮点数仅为2位数(不能格式化/舍入小数点后的6位数到2)

时间:2013-07-31 05:13:38

标签: c decimal rounding ieee-754 decimal-point

我正在嵌入式处理器上运行计算,这涉及像这样的浮点运算:

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

这是一个很长的计算,我的应用程序没有一定的舍入误差;我的意思是7.67或7.66并不重要。有没有办法减少计算浮点数所花费的计算时间,或者将math.h告诉2位?

知道怎么做吗?

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

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

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