Взял бесполезную информацию.
Итак, очевидно, что это домашнее задание, все кажется правильным, кроме расчетов внутри моих функций.
Как вернуть не усеченное значение?
float hat(float weight, float height) {
return (weight/height)*2.9;
}
float jacket(float weight, float height, int age) {
double result = (height * weight) / 288;
/*now for every 10 years past 30 add (1/8) to the result*/
if((age - 30) > 0){
int temp = (age - 30) / 10;
result = result + (temp * .125);
//cout<<"result is: "<<result<<endl;
}
return result;
}
float waist(float weight, int age) {
double result = weight / 5.7;
/*now for every 2 years past 28 we add (1/10) to the result*/
if((age - 28) > 0){
int temp = (age - 28) / 2;
result = result + (temp * .1);
}
return result;}
Задавать fixed
:
// Output data //
cout << fixed;
cout << "hat size: " << setprecision(2) << hat(weight, height) << endl;
cout << "jacket size: " << setprecision(2) << jacket(weight, height, age) << endl;
cout << "waist size: " << setprecision(2) << waist(weight, age) << endl;
cout << "hat size: " << setprecision(2) << hat(weight, height) << endl;
Вы запутались в том, как работает форматированный вывод iostreams.
В режиме «по умолчанию» для форматирования значений с плавающей запятой (без запроса fixed
или же scientific
выход), точность Всего количество цифр для печати, по обе стороны от десятичной точки. Подумайте о «значимых цифрах», а не о «количестве дробных цифр».
Для того, что вы пытаетесь сделать, я предлагаю вам либо использовать «фиксированный» режим, либо обходить вручную, а затем не указывать точность.