我下面的代码是自动舍入输入。
我看不到任何函数可以将输入四舍五入。
有人可以看看吗?
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string input = "";
int weight = 0;
int height = 0;
int bmi = 0;
while (true)
{
cout << "Enter weight: ";
getline(cin, input);
// This code converts from string to number safely.
stringstream myStream(input);
if (myStream >> weight)
break;
cout << "Invalid number, please try again" << endl;
}
while (true)
{
cout << "Enter height: " << endl;
getline(cin, input);
// This code converts from string to number safely.
stringstream myStream(input);
if (myStream >> height)
break;
cout << "Invalid number, please try again" << endl;
}
bmi = height * height;
bmi = weight/bmi;
if(bmi > 25)
{
cout << "Overweight" << endl;
}
else if(bmi < 18.5)
{
cout << "Underweight" << endl;
}
else
{
cout << "Normal weight" << endl;
}
}
最佳答案
您遇到了一个名为integer truncation的问题。通过使用浮点类型(例如double
或float
),可以轻松解决此问题。