【发布时间】:2014-01-17 17:17:46
【问题描述】:
它是一个嵌入式平台,这就是为什么会有这样的限制。
original equation: 0.02035*c*c - 2.4038*c
这样做:
int32_t val = 112; // this value is arbitrary
int32_t result = (val*((val * 0x535A8) - 0x2675F70));
result = result>>24;
精度仍然很差。当我们将val*0x535A8 相乘时,有没有办法通过向上舍入来进一步提高精度,但不使用任何浮点、双精度或除法。
【问题讨论】:
-
你最长的整数有多长?你有输入
c的最大值吗?我想判断你可以使用多少位。 -
我将使用的最大值是 120(对于 C)。整数可以是 32 位长。
-
您想要什么精度?您所做的计算基本上是将一个相当精确的定点值转换为整数,而整数的最大可能值仅为 4。
-
c 的最小值是多少?
-
只有 120 个输入值,您可以轻松使用查找表。