Почему эти функции усекают возвращаемое значение?

Взял бесполезную информацию.

Итак, очевидно, что это домашнее задание, все кажется правильным, кроме расчетов внутри моих функций.

Как вернуть не усеченное значение?

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;}

1

Решение

Задавать 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;
0

Другие решения

cout << "hat size: " << setprecision(2) << hat(weight, height) << endl;

Вы запутались в том, как работает форматированный вывод iostreams.

В режиме «по умолчанию» для форматирования значений с плавающей запятой (без запроса fixed или же scientific выход), точность Всего количество цифр для печати, по обе стороны от десятичной точки. Подумайте о «значимых цифрах», а не о «количестве дробных цифр».

Для того, что вы пытаетесь сделать, я предлагаю вам либо использовать «фиксированный» режим, либо обходить вручную, а затем не указывать точность.

1

По вопросам рекламы [email protected]