gpt4 book ai didi

c++ - 警告 : "conversion from ' double' to 'int' , 可能丢失数据”

转载 作者:太空狗 更新时间:2023-10-29 21:19:49 26 4
gpt4 key购买 nike

我正在做以下 C++ 作业问题:

“编写一个程序,让用户将 12 个月中每个月的总降雨量输入 double 组。该程序应计算并显示当年的总降雨量、月平均降雨量以及降雨量最高的月份和最低金额。

输入验证:月降雨量数据不接受负数。

我得到的错误是:

  • 警告 2 警告 C4244:“=”:从“double”到“int”的转换,可能会丢失数据
  • 警告 4 警告 C4244:“=”:从“double”到“int”的转换,可能会丢失数据
  • 警告 1 警告 C4244:“初始化”:从“ double ”到“整数”的转换,可能丢失数据
  • 警告 3 warning C4244: 'initializing' : conversion from'double' 到 'int',可能丢失数据

阅读这些内容后,我想可以安全地假设我的代码中存在一些关于将 double 转换为整数的错误。我梳理了我的代码,寻找这些错误。我找到的那些int变量(根据Visual Studio 2012提供的行方向),我改成了double;但它只会让我的代码更加困惑并产生更多错误。我什至出去把每个 int 变量都变成了一个 double 变量,结果却被关于“计数器”变量的 20 多个错误所困扰;错误说明“枚举类型”。

如有任何帮助,我们将不胜感激,该作业将于本周四下午(10 月 9 日)截止。

这个程序确实可以编译,但它也给了我各种垃圾答案和多余的垃圾答案。

到目前为止,这是我的代码:

#include<iostream>
#include<string>
using namespace std;

//Function prototypes
void totalAndAverage(int, double []);
void getHighest(int, double [], string []);
void getLowest(int, double [], string []);


//Global integer
const int SIZE = 12;
int main()
{
//Create arrays
double rainfallAmount[SIZE];
int index;
string months[SIZE] = { "January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December" };

//Get the amount of rain for each month
for ( index = 0; index < SIZE; index++)
{
cout << "Please enter the amount of rain (in inches) for month " << (index + 1) << ": " << endl; //+1 to not skip an array element
cin >> rainfallAmount[index];

//input validation, do not accept negative numbers
while (rainfallAmount[index] < 0)
{
cout << "You cannot have a negative amount of rainfall. Please enter the amount of rain." << endl;
cin >> rainfallAmount[index];
}

}

//Call function to find total and average
totalAndAverage(index, rainfallAmount);

//Call function to find highest
getHighest(index, rainfallAmount, months);

//Call function o find lowest
getLowest(index, rainfallAmount, months);

system("pause");
return 0;

}



void totalAndAverage(int i, double rainData[])
{
double total = 0, average;

//Find the total and average
for (i = 0; i < SIZE; i++)
{
total += rainData[i];
}
//Display total
cout << "The total rainfall is: " << total << endl;

//Find average and display
average = total / SIZE;
cout << "The average monthly rainfall is: " << average << endl;
}



void getHighest(int iCount, double rainData2[], string monthData[])
{
string highestMonth;

//Initialize highest
int highestRain = rainData2[0];

//Find the highest
for (iCount = 0; iCount < SIZE; iCount++)
{
if (rainData2[iCount] > highestRain)
{
highestRain = rainData2[iCount];
highestMonth = monthData[iCount];

//Display highest
cout << highestMonth << " had the most rainfall this year with " << highestRain << " inches." << endl;
}

}
}



void getLowest(int counter, double rainData3[], string monthDataCopy[])
{
string lowestMonth;

//Initialize highest
int lowestRain = rainData3[0];

//Find the highest
for (counter = 0; counter < SIZE; counter++)
{
if (rainData3[counter] > lowestRain)
{
lowestRain = rainData3[counter];
lowestMonth = monthDataCopy[counter];

//Display highest
cout << lowestMonth << " had the least rainfall this year with " << lowestRain << " inches." << endl;
}

}
}

最佳答案

你写道:

 int highestRain = rainData2[0];
int lowestRain = rainData3[0];

由于您希望在不四舍五入为整数的情况下找到最高值和最低值,因此您的“迄今为止最佳”变量需要是 double 值。您可以明确声明它们:

 double highestRain = rainData2[0];
double lowestRain = rainData3[0];

您还可以使用 auto 关键字。 (参见 docs for Visual Studio 2012。)这种风格的优点和缺点超出了本答案的范围,但您可能应该了解语言功能。

 auto highestRain = rainData2[0];
auto lowestRain = rainData3[0];

关于c++ - 警告 : "conversion from ' double' to 'int' , 可能丢失数据”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26250883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com