类型转换问题:返回为整数而不是浮点/类型

Type casting issue: Returning as integer instead of float/type

本文关键字:类型 问题 返回 整数 类型转换      更新时间:2023-10-16

我正在尝试将平均值返回给已计算每个数组平均元素数的主。Sum 是一个整数,numTweets 是一个整数。我尝试将这些类型转换为双精度或浮点类型,但它仍然返回一个整数值。真实平均值为 167.5,但返回 168。我附上了在main和函数头/定义中调用函数的照片。

功能原型:

double histogram (int length [], int numTweets);

调用函数:

average = histogram (length, numTweets);
printf ("Average length of all tweets = %.fn", 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;
}

自从我使用printf以来已经有一段时间了,但%.f似乎对待是%.0f如果您在.后指定一个数字,或者不指定任何内容而只使用%f,那么这应该可以解决您的问题。该函数返回正确的值。

https://godbolt.org/z/sG_ns2

来自 : https://en.cppreference.com/w/cpp/io/c/fprintf (粗体是我(

(可选(。后跟整数或 *,或者两者都不指定转换精度。在使用 * 的情况下,精度由 int 类型的附加参数指定。如果此参数的值为负数,则忽略它。如果既不使用数字也不使用 *,则精度为零。有关精度的确切效果,请参阅下表。