我有一个正弦方程,它返回一个浮点值,如:
0.0034,.000006,6.1684332059801899768737349875082e-4
。
我想将相应的浮点值转换为整数变量,并将其传递给寄存器以生成特定的正弦波图。
请帮帮我。
答案 0 :(得分:4)
如果您获得的值为0.0034
,则不能简单地将其转换为int
,因为它会显示为零。事实上,零和一之间的大多数浮点值将为零。
您需要先缩放值,然后将其转换为整数。
例如,要将sine
函数的输出转换为介于-100和100之间的值,您可以使用以下内容:
int val = (int)(fpVal * 100);
这会将范围(-1,1)
(但主要是0
)变为更有用的内容(-100,100)
(在整个范围内分布稍好一些)。
您可能还希望舍入值而不是截断它,以确保生成的值更准确代表输入。
答案 1 :(得分:0)
您可以尝试将浮点值保存为3个无符号整数,一个用于小数点左边的值,两个用于小数点右边的值。 例如,我们得到浮点数“359.042042”并将其保存为变量flt。
int main(void)
{
unsigned int int1, int2, int0;
float flt = 359.042042;
int1 = floor(flt);
int2 = (flt - int1) * pow(10.0, 8.0);
int0 = 8 - log10(int2);
printf("%d.", int1);
while (int0 != 0)
{
printf("0");
int0--;
}
printf("%d", int2);
return 0;
}
int1是小数点左侧的数字,int2是右边的数字,int0是int2之前的“0”。 这将打印“359.042042”。祝你好运。