Как я понимаю, что функция setprecision определяет минимальную точность, но когда я запускаю следующий код я получаю только 3 номера после запятой:C++ точность - поведение setprecision
int main()
{
double a = 123.4567890;
double b = 123.4000000;
std::cout << std::setprecision(5) << a << std::endl; // Udesireble
std::cout.setf(std::ios::fixed);
std::cout << std::setprecision(5) << a << std::endl; // Desireble
std::cout << std::setprecision(5) << b << std::endl; // Udesireble
std::cout.unsetf(std::ios::fixed);
std::cout << std::setprecision(5) << b << std::endl; // Desireble
return 0;
}
, который печатает:
123.46 // Udesireble
123.45679 // Desireble
123.40000 // Udesireble
123.4 // Desireble
Есть ли способ избежать проверки числа цифр после десятичной точки самостоятельно, чтобы узнать, следует ли устанавливать фиксированные?
К сожалению, это единственное решение, которое работало до сих пор, но я был просто уверен, что C++ может иметь что-то более изящное, что я просто не осознавая. – SadStudent
@SadStudent Ваше требование немного необычно. Обычное - иметь фиксированное число десятичных позиций (и нулевое заполнение :-(). Очень хорошо, что вы спросили. –