Есть ли способ установить «минимальное» число десятичных знаков, которое будет выводить std :: ostream?Установка минимального количества знаков после запятой для точности std :: ostream
Например, у меня есть две неизвестных двойные переменные, которые я хочу напечатать (добавлено здесь значения для наглядности):
double a = 0;
double b = 0.123456789;
Я могу установить свою максимальную десятичную точность, так что я вывожу b
точно
std::cout << std::setprecision(9) << b << std::endl;
>>> 0.123456789
есть ли способ, чтобы установить «минимальный» точность (минимальное количество знаков после запятой), сохраняя при этом «максимум» точность, так что
std::cout << a << std::endl << b << std::endl;
дает
0.0
0.123456789
не
0
0.123456789
?
Спасибо! Фил
короткий ответ на это "нет". Поток имеет только одну настройку точности, без возможности различать максимальную и минимальную точность. Спасибо всем за ваш щедрый совет!
Внимательно прочитайте вопрос. Фил хочет MINIMUM с точностью до 1 цифры после десятичной точки, но больше, если есть ненулевые цифры. – Oddthinking
@Phil: вы можете найти http://stackoverflow.com/questions/2475642/how-to-achieve-the-following-c-output-formatting полезным. – 2010-03-22 02:22:30
Спасибо Роджер. Это очень полезно. Пример вашего форматирования выглядит как правильный путь. –