Преобразовать число типа double в строку символов - C (СИ)
Формулировка задачи:
Здравствуйте, эта программа преобразует число типа double в строку символов, с определенным кол-вом знаков с обоих сторон запятой.
Мне нужно так сделать, чтобы например мы берем число 12,456, обрезаем его до 12,45 и оно округлялось до 12,46.
Заранее спасибо.
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
char* dtoa(double _num, int _npos, int _prec)
{
int size = _npos + _prec + 2;
char* num = (char*)malloc(size);
int cel = int(_num); double ost = _num - cel;
num[_npos] = ',';
for (int i = _npos - 1; i >= 0; --i, cel /= 10)
num[i] = cel % 10 + 48;
for (int i = _npos + 1; i < size; ++i) {
num[i] = (int)(ost * 10) + 48;
ost *= 10;
ost -= int(ost);
}
num[size - 1] = '\0';
return num;
}
int main()
{
setlocale(LC_ALL,"Russian");
double _num=0;
int _npos, _prec;
printf("Введите число типа double:\n");
scanf("%lf", &_num);
printf("Введите кол-во знаков до запятой:\n");
scanf("%d", &_npos);
printf("Введите кол-во знаков после запятой:\n");
scanf("%d", &_prec);
printf("Результат:\n");
printf("%s\n", dtoa(_num, _npos, _prec));
}Решение задачи: «Преобразовать число типа double в строку символов»
textual
Листинг программы
printf("%*.*f", prec+npos+1, prec, num);
Объяснение кода листинга программы
Код преобразует число типа double в строку символов. Список действий:
prec— это переменная, которая содержит количество знаков после запятой, включая пробелы.npos— это константа, которая определяет размер строки, в которую будет конвертироваться число.num— это переменная, которая содержит число типа double, которое нужно преобразовать в строку.printf— это функция, которая выполняет форматирование и вывод строки в консоль.%*.*f— это шаблон строки, который определяет формат вывода числа.prec+npos+1— это значение, которое определяет количество знаков, которые нужно вывести в строке.prec— это значение, которое определяет количество знаков после запятой в числе.num— это значение, которое передается в функциюprintfдля преобразования в строку. Следовательно, код выводит число типа double в строку, используя заданное количество знаков после запятой и размер строки.