我有一个功能:
void LocalMax(vector<Station> Entry , int Size)
{
int Highest1 = 0, Highest2 = 0, Highest3 = 0, Temp = 0, Highest = 0;
double TempDouble;
for (int i = 0; i < Size - 1; i++)
{
Temp = Entry[i].MaxTemp;
if (Temp > Highest) {Highest = 0; Highest = Temp;}
if (Entry[i].StationID != Entry[(i + 1)].StationID)
{
if (Entry[i].StationID == "GHCND:USC00083909") {Highest1 = Highest; Highest = 0;}
if (Entry[i].StationID == "GHCND:USW00012888") {Highest2 = Highest; Highest = 0;}
if (Entry[i].StationID == "GHCND:USR0000FCHE") {Highest3 = Highest;}
} else if (Temp > Highest) {Highest = Temp; Temp = 0;}
if (i == Size - 2) {Highest3 = Highest;}
}
TempDouble = Highest1 / 10;
cout << "The highest temp recorded for Station1 was: " << Highest1 << " tenths of a degree Celsius \nor: " << TempDouble << " degrees Celsius." << endl;
TempDouble = Highest2 / 10;
cout << "The highest temp recorded for Station2 was: " << Highest2 << " tenths of a degree Celsius \nor: " << TempDouble << " degrees Celsius." << endl;
TempDouble = Highest3 / 10;
cout << "The highest temp recorded for Station3 was: " << Highest3 << " tenths of a degree Celsius \nor: " << TempDouble << " degrees Celsius." << endl;
}
给了我:
The highest temp recorded for Station1 was: 339 tenths of a degree Celsius or: 33 degrees Celsius. The highest temp recorded for Station2 was: 350 tenths of a degree Celsius or: 35 degrees Celsius. The highest temp recorded for Station3 was: 344 tenths of a degree Celsius or: 34 degrees Celsius.
为什么TempDouble没有显示任何小数?任何澄清都会很棒!提前谢谢。
答案 0 :(得分:5)
您的代码执行整数除法。那是因为两个操作数都是整数。
TempDouble = Highest1 / 10;
整数除法产生整数结果。是的,您确实将该整数分配给浮点值,但为时已晚。你已经失去了师的小部分。
你需要让你的操作数中至少有一个真正有价值才能获得真正的分裂。
例如:
TempDouble = Highest1 / 10.0;
答案 1 :(得分:2)
此行执行整数除法,因为/
的左右操作数为int
s:
TempDouble = Highest1 / 10;
要获得double
,请确保其中一个操作数为double
。最简单的方法是:
TempDouble = Highest1 / 10.0;
答案 2 :(得分:2)
整数运算的结果是整数。如果需要浮点结果,则需要在表达式中包含浮点数,例如:
TempDouble = Highest1 / 10.0;