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

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

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

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

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

textual
Листинг программы
  1. static char[] Digits = "0123456789ABCDEF".ToCharArray();
  2.  
  3. static string GetString(decimal Number, int Base, int Precition = 15)
  4. {
  5.     var output = new StringBuilder();
  6.  
  7.     var sign = Number < 0 ? -1 : 1;
  8.     var intPart = Math.Truncate(Number * sign);
  9.     var fracPart = Number * sign - intPart;
  10.  
  11.     // Перевод целой части (цифры добавляем справа налево)
  12.     do {
  13.         output.Insert(0, Digits[(int)(intPart % Base)]);
  14.         intPart = Math.Truncate(intPart / Base);
  15.     } while (intPart > 0);
  16.  
  17.     // Знак
  18.     if (sign == -1) output.Insert(0, '-');
  19.  
  20.     // Перевод дробной части (цифры добавляем слева направо)
  21.     output.Append('.');
  22.     while (Precition-- > 0 && fracPart > 0) {
  23.         int digit = (int)Math.Truncate(fracPart *= Base);
  24.         fracPart -= digit;
  25.         output.Append(Digits[digit]);
  26.     }
  27.  
  28.     return output.ToString();
  29. }
  30.  
  31. static void Main()
  32. {
  33.     //decimal d = 1m/16 + 11m/(16*16*16);
  34.     decimal d = 17.17m;
  35.     Console.WriteLine(GetString(d, 16, 2));
  36.     Console.ReadLine();
  37. }

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


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

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

12   голосов , оценка 4.417 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы