我们可以通过划分两个整数得到浮动答案吗?

时间:2013-12-12 22:18:21

标签: c floating-point

int8_t a;
int8_t b;
int8_t result;
result = (a*coeff) + b*(1-coeff);

现在这个系数必须是0.5,但由于内存限制,我无法存储浮点数。有没有办法可以进行上述操作?

由于

3 个答案:

答案 0 :(得分:4)

听起来好像fixed-point math就是你需要的答案。在定点中,您可以决定要放弃的整数大小。然后你移动许多地方的小数点(基数为10的小数点)(通常是二进制)。

因此,如果您希望分辨率为0.25,则需要移位2位。在一个16位整数中,可以将范围从32678减小到8192。

答案 1 :(得分:0)

如果coeff已经是浮点类型,那么一切都很好。涉及它的表达式将转换为浮点类型,最终结果将转换回int

答案 2 :(得分:0)

您可能会发现rational number library是有用的。这将数字存储为整数比率,如1/4或255/256。