В чем разница между функциями llround () и round () в C ++? - PullRequest
0 голосов
/ 20 апреля 2020

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

cout << round(answer); //this didn't pass one test case
//the following block of code passed all test cases
if (answer-(int)answer>0.5) cout << int(answer)+1; 
else cout << (int)answer;
cout << llround(answer); //this passed all test cases

Итак, в чем разница между round() и llround() для этого типа поведения? Если бы переменная answer была бы настолько большой, что не помещалась бы в тип int, тогда блок кода if-else также не должен был бы работать. Так чего мне не хватает?

Спасибо!

1 Ответ

1 голос
/ 20 апреля 2020

round() возвращает значение с плавающей запятой, в то время как ваши альтернативы возвращают целочисленное значение. При форматировании по умолчанию cout в выходных данных не должно быть различий, но если вы изменили форматирование, может быть разница:

double answer = 1.5;
cout << round(answer) << " " << llround(answer) << "\n"; // Prints 2 2
cout << std::fixed << setprecision(5);
cout << round(answer) << " " << llround(answer) << "\n"; // Prints 2.00000 2
...