Перевод из Double в строку символов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, не большие вопросы по коду. Смотрите ниже. Заранее спасибо.
#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)    //что делает этот цикл, конкретно что такое 10 и что такое 48               
        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
Листинг программы
    //что делает этот цикл, конкретно что такое 10 и что такое 48
    for (int i = _npos - 1; i >= 0; --i, cel /=  10)
        num[i] = cel % 10 + 48;

Объяснение кода листинга программы

В данном коде выполняется перевод числа из типа double в строку символов.

  1. Создается цикл for, который начинается с _npos - 1 и выполняется до тех пор, пока i >= 0. Значение _npos - 1 равно типу double, в котором число цифр равно 10.
  2. Внутри цикла переменная cel делится на 10, что приводит к уменьшению числа на единицу.
  3. Результат деления (с остатком) записывается в переменную num с индексом i.
  4. К полученному результату добавляется 48, что приводит к переводу десятичных цифр в символы от '0' до '9'. Данный код выполняет перевод числа в строку, представляющую собой последовательность символов от '0' до '9', соответствующих его десятичным цифрам.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.6 из 5
Похожие ответы