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是的,对..但仅在看到问题标题后就迅速发表了评论。