округление — C ++ округление до двух десятичных знаков

У меня проблемы с округлением двойного балла до двух десятичных знаков. (ex of GPA нужно было округлить: 3.67924) В настоящее время я использую ceil для округления, но в настоящее время он выводит его как целое число (368)

вот что у меня сейчас

if (cin >> gpa) {
if (gpa >= 0 && gpa <= 5) {
// valid number

gpa = ceil(gpa * 100);

break;
} else {
cout << "Please enter a valid GPA (0.00 - 5.00)" << endl;
cout << "GPA: ";

}
}

использование вышеприведенного кода с 3.67924 приведет к выводу 368 (что я и хочу, но без периода между целым числом и десятичными числами). Как я могу это исправить?

0

Решение

Вы не можете округлить двойные до двух знаков после запятой. Двойники не иметь десятичные разряды. У них есть двоичные разряды, и они не соизмеримы с десятичными разрядами.

Если вам нужны десятичные разряды, вы должны использовать десятичное число, например при форматировании для вывода с помощью printf («%. 2f», …).

1

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

Попробуй это. Но твой cout оператор в другом состоянии, поэтому он не даст желаемый результат для 3.67924.

if (cin >> gpa)
{
if (gpa >= 0 && gpa <= 5) {
// valid number

gpa = ceil(gpa * 100);
gpa=gpa/100;
break;
}
else
{
cout << "Please enter a valid GPA (0.00 - 5.00)" << endl;
cout << "GPA: ";
}
}
0

Если это просто вопрос записи на экран, то для округления числа используйте

std::cout.precision(3);
std::cout << gpa << std::endl;

увидеть

числа с плавающей запятой не представлены точно, поэтому, округляя значение внутри себя, а затем используя его в своих вычислениях, вы увеличиваете неточность.

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