如何在C编程中将int转换为Double
How to convert int to Double in C programming
int num1, num2;
double average;
average=(double)(num1+num2)/2;
printf("average: %d", average);
我的测试 printf 显示平均值为:0
这可能太简单了,但我看不到。我的输入都是 "int",平均值是 "double" 但不知何故计算不正确?
您对 printf
使用了错误的格式说明符。
%d
格式说明符需要一个 int
参数,但您传递的是 double
。使用错误的格式说明符调用 undefined behavior.
要打印 double
,请使用 %f
。
printf("average: %f\n", average);
无需修改语句 average=(double)(num1+num2)/2;
即可在 printf
中获得预期结果 使用 %f
而不是 %d
- 第一次
(num1+num2)
被执行,结果是integral
类型。让我们说 15
。接下来,当您执行 (double)15/2
结果时,结果是 floating
类型,即 7.500000
.
- 从上一步
average = (double)7.500000
平均保持 7.500000
但由于您在 %d
中打印,您得到 0
作为其未定义的行为。而是使用 %f
这是工作的
int main() {
int num1 = 7, num2 = 8;
double average;
average = (double)(num1 + num2)/2;
printf("average: %f\n", average);
return 0;
}
int num1, num2;
double average;
average=(num1+num2)/2.; // Using a decimal point forces 2 to be a double.
printf("average: %f\n", average); // Use the correct specifier for double: %f
你应该使用 printf("average= %f",averge);而不是使用“%d”打印平均值 value.I 认为它会解决您的问题...
整数除法得到一个整数结果:1/2 == 0
、5/3 == 1
等。如果你想要一个浮点结果,至少有一个操作数必须是浮点类型:1/2.0f == 0.5f
、5/3.0 == 1.6667
等
因此,您需要将总和除以 2.0
,而不是 2
:
average = (num1 + num2)/2.0;
其次,浮点数输出需要使用%f
格式说明符:
printf( "average: %f\n", average );
int num1, num2;
double average;
average=(double)(num1+num2)/2;
printf("average: %d", average);
我的测试 printf 显示平均值为:0
这可能太简单了,但我看不到。我的输入都是 "int",平均值是 "double" 但不知何故计算不正确?
您对 printf
使用了错误的格式说明符。
%d
格式说明符需要一个 int
参数,但您传递的是 double
。使用错误的格式说明符调用 undefined behavior.
要打印 double
,请使用 %f
。
printf("average: %f\n", average);
无需修改语句 average=(double)(num1+num2)/2;
即可在 printf
中获得预期结果 使用 %f
而不是 %d
- 第一次
(num1+num2)
被执行,结果是integral
类型。让我们说15
。接下来,当您执行(double)15/2
结果时,结果是floating
类型,即7.500000
. - 从上一步
average = (double)7.500000
平均保持7.500000
但由于您在%d
中打印,您得到0
作为其未定义的行为。而是使用%f
这是工作的
int main() {
int num1 = 7, num2 = 8;
double average;
average = (double)(num1 + num2)/2;
printf("average: %f\n", average);
return 0;
}
int num1, num2;
double average;
average=(num1+num2)/2.; // Using a decimal point forces 2 to be a double.
printf("average: %f\n", average); // Use the correct specifier for double: %f
你应该使用 printf("average= %f",averge);而不是使用“%d”打印平均值 value.I 认为它会解决您的问题...
整数除法得到一个整数结果:1/2 == 0
、5/3 == 1
等。如果你想要一个浮点结果,至少有一个操作数必须是浮点类型:1/2.0f == 0.5f
、5/3.0 == 1.6667
等
因此,您需要将总和除以 2.0
,而不是 2
:
average = (num1 + num2)/2.0;
其次,浮点数输出需要使用%f
格式说明符:
printf( "average: %f\n", average );