c语言中浮点指向数的整数转换

c语言中浮点指向数的整数转换,c,C,我有一个正弦方程,它返回一个浮点值,如: 0.0034、.000006,6.16843320598018997687349875082E-4 我想将相应的浮点值转换为整数变量,并将其传递到寄存器以生成特定的正弦波图 请帮帮我。如果您得到的值像0.0034,您不能简单地将其转换为int,因为它将显示为零。事实上,大多数介于0和1之间的浮点值将显示为零 您需要首先放大该值,然后将其转换为整数 例如,要将sine函数的输出转换为介于-100和100之间的值,可以使用以下方法: int val = (i

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

0.0034、.000006,6.16843320598018997687349875082E-4

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


请帮帮我。

如果您得到的值像
0.0034
,您不能简单地将其转换为
int
,因为它将显示为零。事实上,大多数介于0和1之间的浮点值将显示为零

您需要首先放大该值,然后将其转换为整数

例如,要将
sine
函数的输出转换为介于-100和100之间的值,可以使用以下方法:

int val = (int)(fpVal * 100);
这将使范围
(-1,1)
(但大部分
0
)变得更有用,
(-100100)
(在整个范围内的分布稍好一些)


您可能还希望对值进行四舍五入而不是截断,以确保生成的值更准确地表示输入。

如果您得到的值像
0.0034
,您不能简单地将其转换为
int
,因为它将显示为零。事实上,大多数介于0和1之间的浮点值将显示为零

您需要首先放大该值,然后将其转换为整数

例如,要将
sine
函数的输出转换为介于-100和100之间的值,可以使用以下方法:

int val = (int)(fpVal * 100);
这将使范围
(-1,1)
(但大部分
0
)变得更有用,
(-100100)
(在整个范围内的分布稍好一些)


您可能还希望对值进行四舍五入而不是截断,以确保生成的值更准确地表示输入。

您可以尝试将浮点值保存为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”。祝您好运。

您可以尝试将浮点值保存为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”。祝你好运。

将其分配给
int
变量。比如
intvar_b=(int)var_a
look type将每个浮点值转换为int。为什么不能用浮点值生成正弦波,如果将其转换为
int
,则会失去精度。@Jayesh:正弦函数的范围是
[-1,1]
。将正弦值键入
int
将使其成为方波或阶梯图。@Don'tYouWorryChild是的,对..但仅在看到问题标题后快速注释。将其指定给
int
变量。比如
intvar_b=(int)var_a
look type将每个浮点值转换为int。为什么不能用浮点值生成正弦波,如果将其转换为
int
,则会失去精度。@Jayesh:正弦函数的范围是
[-1,1]
。将正弦值键入
int
将使其成为方波图或阶梯图。@Don'tYouWorryChild是的,对..但仅在看到问题标题后就迅速发表了评论。