Как вывести double с заданным количеством символов перед запятой?

414
18 декабря 2017, 14:40

Мне нужно значение double перевести в строку с определенным количеством символов до и после запятой. Я использую функцию snprintf():

char buffer[400];
int n = snprintf(buffer, 400, "%.0f", 1234.5678);

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

Могу ли я с помощью этой функции регулировать вывод количество знаков до запятой? Например:

 01234.5678 // 5 знаков до запятой, 4 знака после запятой 
 -1234.5678 // 5 знаков до запятой, 4 знака после запятой 
-01234.5678 // 6 знаков до запятой, 4 знака после запятой 

Если с помощью snprintf нельзя получить такой результат, то, может быть, есть другие функции в stl или стандартной библиотеке языка C?

Answer 1
double d = 1234.5678;
snprintf(...,"%010.4lf\n",d);
snprintf(...,"%010.4lf\n",-d);
snprintf(...,"%011.4lf\n",-d);

cout << setprecision(4) << setfill('0') << fixed << internal;
cout << setw(10) << d << endl;
cout << setw(10) << -d << endl;
cout << setw(11) << -d << endl;
READ ALSO
Как построить из ОПЗ бинарное дерево с++?

Как построить из ОПЗ бинарное дерево с++?

Вот пример реализации ОПЗ, возможно местами кривоКак из этого сделать бинарное дерево? У меня идея была построить двумерный массив и уже...

196
Ошибка с выделением памяти

Ошибка с выделением памяти

Есть код, который расписывает матрицу и считает суммы диагоналей(будет ниже) В коде есть функция которая задаёт размер матрицы с клавиатуры(Матрица...

245
Qsort не работает в XCode

Qsort не работает в XCode

Столкнулся с проблемой при решении задачи на XCode

204