C++ 类型转换问题:作为整数而不是浮点/类型返回
我试图将average返回给main,main计算了每个数组的平均元素数。Sum是整数,numTweets是整数。我尝试将这些类型转换为双精度或浮点类型,但它仍然返回一个整数值。真实平均值为167.5,但返回168。我附上了main中函数调用的照片和函数头/定义 功能原型:C++ 类型转换问题:作为整数而不是浮点/类型返回,c++,casting,user-defined-functions,typecasting-operator,C++,Casting,User Defined Functions,Typecasting Operator,我试图将average返回给main,main计算了每个数组的平均元素数。Sum是整数,numTweets是整数。我尝试将这些类型转换为双精度或浮点类型,但它仍然返回一个整数值。真实平均值为167.5,但返回168。我附上了main中函数调用的照片和函数头/定义 功能原型: double histogram (int length [], int numTweets); average = histogram (length, numTweets); printf ("Average leng
double histogram (int length [], int numTweets);
average = histogram (length, numTweets);
printf ("Average length of all tweets = %.f\n", average);
double histogram (int length[], int numTweets) {
int i, j;
int sum = 0;
double average = 0.0;
for (i = 0; i < numTweets; i++) {
printf("Tweet %d:", i + 1);
for (j = i; j < length[i]; j++) {
printf("*");
}
sum = sum + length[i];
printf("\n");
}
average = (float)sum / (float)numTweets;
return average;
}
调用函数:
double histogram (int length [], int numTweets);
average = histogram (length, numTweets);
printf ("Average length of all tweets = %.f\n", average);
double histogram (int length[], int numTweets) {
int i, j;
int sum = 0;
double average = 0.0;
for (i = 0; i < numTweets; i++) {
printf("Tweet %d:", i + 1);
for (j = i; j < length[i]; j++) {
printf("*");
}
sum = sum + length[i];
printf("\n");
}
average = (float)sum / (float)numTweets;
return average;
}
函数标题/定义:
double histogram (int length [], int numTweets);
average = histogram (length, numTweets);
printf ("Average length of all tweets = %.f\n", average);
double histogram (int length[], int numTweets) {
int i, j;
int sum = 0;
double average = 0.0;
for (i = 0; i < numTweets; i++) {
printf("Tweet %d:", i + 1);
for (j = i; j < length[i]; j++) {
printf("*");
}
sum = sum + length[i];
printf("\n");
}
average = (float)sum / (float)numTweets;
return average;
}
双直方图(int-length[],int-numTweets){
int i,j;
整数和=0;
双平均=0.0;
对于(i=0;i
我已经有一段时间没有使用printf
,但是%.f
似乎将is视为%.0f
如果您在
后面指定一个数字,或者不指定任何内容,只使用%f
,那么这应该可以解决您的问题。函数正在返回正确的值
发件人:(粗体是我)
(可选)。后跟指定转换精度的整数或*,或两者都不后跟。在使用*的情况下,精度由int类型的附加参数指定。如果此参数的值为负值,则忽略它如果既不使用数字也不使用*,则精度为零。有关精度的确切影响,请参见下表
我已经有一段时间没有使用
printf
,但是%.f
似乎将is视为%.0f
如果在
后面指定一个数字,或者不指定任何内容,只使用%f
,那么这应该可以解决您的问题。函数正在返回正确的值
发件人:(粗体是我)
(可选)。后跟指定转换精度的整数或*,或两者都不后跟。在使用*的情况下,精度由int类型的附加参数指定。如果此参数的值为负值,则忽略它如果既不使用数字也不使用*,则精度为零。有关精度的确切影响,请参见下表
调用
直方图
中的平均值
是什么?不相关,但是为什么要在j==i开始内部循环呢?此处显示的其余代码看起来正确。在调用main中的函数后,average在main中声明为双数据类型请在您的问题中添加一个或我应该添加的抱歉。有一个printf语句。我已经更新了它。调用直方图
中的平均值
是什么?不相关,但为什么要在j==I
处启动内部循环?此处显示的其余代码看起来正确。在调用main中的函数后,average在main中声明为双数据类型请在您的问题中添加一个或我应该添加的抱歉。有一个printf语句。我已经更新了它。所以这是一个作业,主要是由讲师给出的,我要完成功能体的。我不应该在main中更改任何内容,因此无法更改printf语句。既然您认为printf声明是问题所在,您是否建议我联系讲师?我建议询问讲师,是的。这可能是他/她故意这么做的,或者只是一个简单的打字错误。也可能是他们的编译器对待它的方式不同,尽管我试过3个编译器,它们的工作原理都是一样的,所以很可能是输入错误。好的,谢谢,我会问的。他们希望平均值以双精度返回,小数点后2位,但考虑到您指出的打印语句,这似乎不太可能发生。我添加了一个参考<如果
后面没有任何内容,则code>printf
应默认为0
精度,因此这是一项作业,其中主要内容由讲师给出,我将完成功能体的操作。我不应该在main中更改任何内容,因此无法更改printf语句。既然您认为printf声明是问题所在,您是否建议我联系讲师?我建议询问讲师,是的。这可能是他/她故意这么做的,或者只是一个简单的打字错误。也可能是他们的编译器对待它的方式不同,尽管我试过3个编译器,它们的工作原理都是一样的,所以很可能是输入错误。好的,谢谢,我会问的。他们希望平均值以双精度返回,小数点后2位,但考虑到您指出的打印语句,这似乎不太可能发生。我添加了一个参考<如果后面没有任何内容,则code>printf
应默认为0
精度