nesC:将浮点数转换为整数

时间:2014-02-03 18:32:16

标签: c floating-point-conversion nesc

我想使用浮点数来生成uint16的xor,如下所示:

uint16_t a=20000;
double r,x,xo;
r=3.8;
xo=.1;
x=(int) r*xo*(1-xo);
c=a^x;

当我运行测试时,会发生以下错误:

invalid operand to binary ^

如何将x转换为16位的整数值?

2 个答案:

答案 0 :(得分:0)

nesC是C的扩展,因此您可以将浮点数转换为整数,就像在C中一样,使用强制转换。 例如:

(int)(x+0.5)

请注意,这有一些限制,请在此处查看更多详细信息:http://www.cs.tut.fi/~jkorpela/round.html

答案 1 :(得分:0)

问题是x仍然是双倍值。演员

x=(int) r*xo*(1-xo);

截断数字,但它仍然是一个双数。

要执行您想要的操作,您需要将x声明为int或在xor之前投射:

c=a^((int)x);