Я использую следующий код для округления до 2dp:
sprintf(temp,"%.2f",coef[i]); //coef[i] returns a double
Он успешно округляет 6,666 до 6,67, но неправильно работает при округлении 5,555. Он возвращает 5,55, тогда как должен (по крайней мере, на мой взгляд) возвращать 5,56.
Как я могу округлить его, когда следующая цифра равна 5? то есть возврат 5.56.
редактировать: теперь я понимаю, что это происходит, потому что, когда я ввожу 5.555 с cin, он сохраняется как 5.554999997.
Я собираюсь попробовать округлить в два этапа - сначала до 3dp, а затем до 2dp. любые другие (более элегантные) идеи?