Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/41: Рейтинг темы: голосов - 41, средняя оценка - 4.80
0 / 0 / 4
Регистрация: 05.12.2013
Сообщений: 68

Перевести десятичное число с плавающей запятой (точкой) в шестнадцатеричную систему и в 4-байтовом формате

31.01.2014, 09:37. Показов 8083. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Как перевести десятичное число с плавающей запятой (точкой) в шестнадцатиричную систему и в 4-байтовом формате??
Заранее спасибо.
C#
1
2
3
Console.WriteLine("Vvedite 10-noe chislo");
            double k = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine(k + "-" + Convert.ToString(BitConverter.DoubleToInt64Bits(k)&(1<<32)-1,32));
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2014, 09:37
Ответы с готовыми решениями:

Нужно перевести десятичное число в формат с плавающей точкой
Здравствуйте, прошу не слать и не злится....помогите с решением. Нужно перевести десятичное число в формат с плавающей точкой (Float)...

Получить шестнадцатеричную форму внутреннего представления числа в формате с плавающей точкой в 4-х байтовой ячейке
Получить внутреннее представление вещественных целых чисел в памяти компьютера. Получить шестнадцатеричную форму внутреннего...

Получить шестнадцатеричную форму внутреннего представления числа в формате с плавающей точкой в 4-х байтовой ячейке
Получить шестнадцатеричную форму внутреннего представления числа в формате с плавающей точкой в 4-х байтовой ячейке. По 16-ричной форме...

15
50 / 49 / 41
Регистрация: 17.12.2013
Сообщений: 101
31.01.2014, 22:50
Цитата Сообщение от Rauan Посмотреть сообщение
перевести десятичное число с плавающей запятой (точкой) в шестнадцатиричную систему
думаю, что можно и более элегантно сделать
C#
1
2
3
4
            var d = 1234.4321;
            var a = d.ToString().Split(',');
            string s = Convert.ToString(Convert.ToInt32(a[0]), 16) + ',' 
                            + Convert.ToString(Convert.ToInt32(a[1]), 16);
2
0 / 0 / 4
Регистрация: 05.12.2013
Сообщений: 68
03.02.2014, 17:50  [ТС]
Помогите где ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 Console.WriteLine("Vvedite 10-noe chislo");
            double d = double.Parse(Console.ReadLine());
            var a = d.ToString().Split(',');
            double b = Convert.ToInt64(a[1]) / Math.Pow(10, a[1].Length);
            int k = 0;
            double q = 1;
            int[] s = new int[10];
            while ((b - Math.Floor(b)) == 0)
            {
                q = b * 2;
                Console.WriteLine(q);
                s[k] = Convert.ToInt16(q);
                k++;
            }
            string f;
            f = string.Join("", s);
         Console.ReadLine();
Добавлено через 3 минуты
Тут 2-ная система
0
50 / 49 / 41
Регистрация: 17.12.2013
Сообщений: 101
03.02.2014, 21:54
а что должна программа делать, что то я не понимаю какой результат нужен и условие задачи.
0
0 / 0 / 4
Регистрация: 05.12.2013
Сообщений: 68
03.02.2014, 22:14  [ТС]
дробное десятичное число выводить на двоичной системе
просто я тут в цикле не смог правильно условие назначить
подскажите как сделать так чтобы (b - Math.Floor(b)) == 0) выполнялось
(b - Math.Floor(b) дробное число

Добавлено через 1 минуту
PS:
Я знаю что тут нету конвертера в двоичную систему. мне просто нужно решить проблему с циклом и условием.
Заранее спасибо
0
2 / 2 / 2
Регистрация: 02.11.2012
Сообщений: 53
04.02.2014, 01:05
Лучший ответ Сообщение было отмечено Rauan как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string result;
                string minus = "";
                Console.WriteLine("Введите десятичное число:");
                double num = Convert.ToDouble(Console.ReadLine());
 
                string[] parts = num.ToString().Split(',');     //разбиваем число на дробную и целую части
 
                if (parts[0][0] == '-')                         //если стоял минус, то запоминаем его
                {
                    minus = "-";
                    parts[0] = parts[0].Remove(0, 1);
                }
 
                //конвертируем обе части в шестнадцатеричную форму и выводим
                if (parts.Length == 2) result = convert_int(Convert.ToInt32(parts[0])) + ',' + convert_float(Convert.ToInt32(parts[1]), 5);
                else result = convert_int(Convert.ToInt32(parts[0]));
 
                Console.WriteLine(minus + result + "(16)");
            }
            catch (Exception e)                     //отлавливаем ошибки ввода числа
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadKey(true);
        }
 
        static string convert_float(int num, int length)    //перевод дробной части
        {
            string a = "0123456789ABCDEF";          //массив символов для хранения цифр(для более быстрого перевода букв в числа)
            string b = "";
 
            int ost = 0;
            int res = 0;
 
            double d_num = Convert.ToDouble("0," + num.ToString());
 
            string result = "";
 
            for (int i = 0; i < length; i = i + 1)      //умножаем цифры на 16 и отбрасываем последнюю полученную цифру
            {
                d_num = d_num * 16;     
 
                string[] parts = d_num.ToString().Split(',');
 
                if (parts.Length == 2 && d_num != 0)
                {
                    result = result + a[Convert.ToInt32(parts[0])];
                    d_num = Convert.ToDouble("0," + parts[1]);
                }
                else
                {
                    result = result + a[Convert.ToInt32(d_num)];
                    break;
                }
            }
 
            return result;
        }
 
        static string convert_int(int num)      //перевод целых чисел
        {
            if (num == 0) return num.ToString();
 
            string a = "0123456789ABCDEF";
            string result = "";
 
            int[] parts = new int[50];
 
            int res = 27;
 
            int k = 0;
 
            while (num != 0)                    //пока число больше нуля, делим на 16 и записываем остаток от деления в ответ
            {
                res = num % 16;
                num = num / 16;
                parts[k] = res;
                k = k + 1;
            }
            //переворачиваем результат
            for (int i = k - 1; i >= 0; i = i - 1)
            {
                result = result + a[parts[i]];
            }
 
            return result;
        }
    }
}
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2014, 01:30
Часть после запятой по совсем другим правилам выводится...
37.2310 = 25.3AE14716
0
0 / 0 / 4
Регистрация: 05.12.2013
Сообщений: 68
04.02.2014, 06:43  [ТС]
Psilon, знаю, нужно умножать на нужное число (тут 16), до тех пор, пока в дробной части останутся только нули или до необходимого количество битов. Вопрос как все это написать на C#?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2014, 18:33
Rauan,
Bash
1
2
3
4
5
пока (дробная_часть_не_нули && число_бит < необходимого_количества_бит)
   умножить на нужное число
   результат = результат + число/нужное_число
   число = число % нужное_число
конец пока
1
04.02.2014, 18:36

Не по теме:

Цитата Сообщение от Psilon Посмотреть сообщение
Bash
1
2
3
4
5
пока (дробная_часть_не_нули && число_бит < необходимого_количества_бит)
   умножить на нужное число
   результат = результат + число/нужное_число
   число = число % нужное_число
конец пока удачи
Исправил.

2
0 / 0 / 4
Регистрация: 05.12.2013
Сообщений: 68
04.02.2014, 20:18  [ТС]
Psilon, а что делать с отрицательными десятичными числами.
Можете указать материал с подробным объяснением или готовый код?

Добавлено через 3 минуты
kolorotur, Psilon, а что делать с отрицательными числами?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2014, 23:08
Rauan,
C#
1
2
3
4
5
6
var result = new StringBuilder();
if (a < 0)
{
   result.Append("-");
   a = -a;
}
1
0 / 0 / 4
Регистрация: 05.12.2013
Сообщений: 68
05.02.2014, 21:04  [ТС]
Psilon, а такое прокатит в переводе в двоичную систему?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.02.2014, 22:55
Rauan, а с чего это "не прокатит"?
1
0 / 0 / 4
Регистрация: 05.12.2013
Сообщений: 68
06.02.2014, 00:43  [ТС]
как добавить ваш код к коду который посоветовал bigsanya?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.02.2014, 14:59
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
        public static string ConvertNum(double x, int @base, int precision)
        {
            string sign = null;
            if (x < 0)
            {
                sign = "-";
                x = -x;
            }
            int div = (int) x;
            string s = GetMod(x - div, @base, precision);
            string mod = string.IsNullOrEmpty(s)
                             ? string.Empty
                             : CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + s;
            return sign + Convert.ToString(div, @base).ToUpper() + mod;
        }
 
        private static string GetMod(double x, int @base, int precision)
        {
            var result = new char[precision];
            double d = x;
            for (int i = 0; i < precision && d > 0; i++, d -= (int) d)
            {
                d *= @base;
                result[i] = (char) (d < 10 ? d + '0' : d + 'A' - 10);
            }
            return new string(result).TrimEnd('\0');
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2014, 14:59
Помогаю со студенческими работами здесь

Десятичное число с точкой вместо запятой
Всем привет. В запросе на обновление используется след. выражение: &amp; &quot;BillsDetails.PriceDiscount = *IIf(/100&gt;=&quot; &amp; DV &amp;...

Класс : Число с плавающей запятой(точкой)
Подскажите,где можно побольше узнать о числах с плавающей запятой,желательно не теоретическую часть,а программную. У меня задания...

Перевести заданное десятичное число в шестнадцатеричную форму. Ввод десятичного числа с клавиатуры
Перевести заданное десятичное число в шестнадцатеричную форму. Ввод десятичного числа с клавиатуры в диапазоне от 0 до 4096. #!/bin/bash...

Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (N>0)
2. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (N&gt;0). Вывести набор символов,...

Поместить в матрицу число в формате с плавающей запятой
Здравствуйте. Как вставить реальное число в матрицу?Вставляю 0.0002, беру из ячейки 2. Конечно можно умножать на 10 000, перед тем, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru