在c编程中将float指向数字转换为整数

时间:2014-08-25 06:01:46

标签: c

我有一个正弦方程,它返回一个浮点值,如:

0.0034,.000006,6.1684332059801899768737349875082e-4

我想将相应的浮点值转换为整数变量,并将其传递给寄存器以生成特定的正弦波图。

请帮帮我。

2 个答案:

答案 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”。祝你好运。