Перевод дробной части числа из десятичной системы счисления в любую другую систему счисления - C#

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

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

Здравствуйте как перевести дробной части числа из десятичной системы счисления в любую другую систему счисления. При переводе целых частей выходит все просто
static void Main(string[] args)
        {

            string text="5";
            string test;
            test= Convert.ToString(Convert.ToInt32(text, 10), 2);
            Console.WriteLine("{0}", test);
            Console.ReadLine();
        }
а как сделать с дробными

Решение задачи: «Перевод дробной части числа из десятичной системы счисления в любую другую систему счисления»

textual
Листинг программы
static void Main(string[] args)
        {
            //Входная строка
            string text;
text1 = Console.ReadLine();
            //Преобразование в double 
            double text1;
            text1 = Convert.ToDouble(text);
            Console.WriteLine("{0}", text1);
            //Воруем целую часть
            string zel;
            zel = Convert.ToString(Convert.ToInt32(Math.Truncate(text1)), 2);
            int zel1 = Convert.ToInt32(Math.Truncate(text1));
            Console.WriteLine("{0}", zel, zel1);
            //Воруем дробную часть
            double text2;
            text2 = text1 - Math.Truncate(text1);
            Console.WriteLine("{0}", text2);
 
            //Фокус покус это цикл
            int cc;
            Console.WriteLine("Система счисления");
            cc = Convert.ToInt32(Console.ReadLine());
            double[] asd = new double[10];
            asd[0] = text2;
 
            string drob = null;
 
            for (int i = 1; i < 10; i++)
            {
                switch (cc)
                {
                    case 2:
                        asd[i] = (2 * asd[i - 1]) - Math.Truncate(asd[i - 1] * 2);
                        int bin = Convert.ToInt32(Math.Truncate(asd[i - 1] * 2));
                        Console.WriteLine("bin={0}", bin);
                        drob += bin;
                        break;
                    case 8:
                        asd[i] = (8 * asd[i - 1]) - Math.Truncate(asd[i - 1] * 8);
                        double oct = Math.Truncate(asd[i - 1] * 8);
                        Console.WriteLine("oct={0}", oct);
                        drob += oct;
                        break;
                    case 16:
                        asd[i] = (16 * asd[i - 1]) - Math.Truncate(asd[i - 1] * 16);
                        string hex;
                        hex = Convert.ToString(Math.Truncate(asd[i - 1] * 16));
 
                        int ze;
                        ze = Convert.ToInt32(hex);
 
                        switch (ze)
                        {
                            case 10:
                                hex = "A";
                                break;
                            case 11:
                                hex = "B";
                                break;
                            case 12:
                                hex = "C";
                                break;
                            case 13:
                                hex = "D";
                                break;
                            case 14:
                                hex = "E";
                                break;
                            case 15:
                                hex = "F";
                                break;
                            default:
                                break;
                        }
                        Console.WriteLine("hex={0}", hex);
                        drob += hex;
                        break;
                    default:
                        break;
 
                }
            }
 
 
            Console.WriteLine("{0}.{1}", zel, drob);
            Console.ReadLine();
        }

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


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

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

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