Перевод нецелого числа - C#

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

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

Здравствуйте всем. У меня возникли сложности со следующей задачей Дано действительное число с целой и дробной части N = cn-1 ... c0.dm-1 ... d0, где ci, dj - это цифры десятичной системы счисления. Перевести число N в шестнадцатиричную систему счисления с заданной точностью, вычислив k цифр дробной части числа. Получить ленту strN, которая задает запись числа N в этой системе счисления. Пример: N = 17.17 (10) = 11 1B (16) Подскажите, пожалуйста, алгоритм работы такой программы. Я только знаю как с целыми числами работать

Решение задачи: «Перевод нецелого числа»

textual
Листинг программы
static char[] Digits = "0123456789ABCDEF".ToCharArray();
 
static string GetString(decimal Number, int Base, int Precition = 15)
{
    var output = new StringBuilder();
 
    var sign = Number < 0 ? -1 : 1;
    var intPart = Math.Truncate(Number * sign);
    var fracPart = Number * sign - intPart;
 
    // Перевод целой части (цифры добавляем справа налево)
    do {
        output.Insert(0, Digits[(int)(intPart % Base)]);
        intPart = Math.Truncate(intPart / Base);
    } while (intPart > 0);
 
    // Знак
    if (sign == -1) output.Insert(0, '-');
 
    // Перевод дробной части (цифры добавляем слева направо)
    output.Append('.');
    while (Precition-- > 0 && fracPart > 0) {
        int digit = (int)Math.Truncate(fracPart *= Base);
        fracPart -= digit;
        output.Append(Digits[digit]);
    }
 
    return output.ToString();
}
 
static void Main()
{
    //decimal d = 1m/16 + 11m/(16*16*16);
    decimal d = 17.17m;
    Console.WriteLine(GetString(d, 16, 2));
    Console.ReadLine();
}

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


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

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

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