Онлайн перевод дробных чисел из десятичной системы счисления
Введите число:
Введите основание системы счисления:
Подробно о переводе чисел из одной системы счисления в другую рассмотрено в этой статье.
Реализация на 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
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
#include <iostream>
#include <iostream>
using namespace std;
// Отображение шестнадцатеричной цифры
char digit(int num)
{
switch (num) {
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
}
}
// Получение целой части числа
int dectox_int(int a, int p, char *s)
{
int num = (int)a;
int rest = num % p;
num /= p;
if (num == 0)
{
s[0] = digit(rest); return 1;
}
int k = dectox_int(num, p, s);
s[k++] = digit(rest);
return k;
}
// Получение дробной части числа
void dectox_double(double a, int p, char *s)
{
int iter = 0;
int k = 0;
double a1 = a;
do {
a1 = a1 * p;
int num = (int)(a1);
s[k++] = digit(num);
a1 -= (int)a1;
iter++;
} while (a1 > 0.00000001 && iter < 10);
s[k] = '\0';
}
int main()
{
double a;
char s[80] = { 0 };
int p;
system("chcp 1251");
system("cls");
cout << "Введите число: ";
cin >> a;
cout << "Введите основание системы счисления: ";
cin >> p;
int k = dectox_int((int)a, p, s);
s[k++] = ',';
dectox_double(a — (int)a, p, &s[k]);
cout << s;
cin.get(); cin.get();
return 0;
}
#include <iostream>
using namespace std;
// Отображение шестнадцатеричной цифры
char digit(int num)
{
switch (num) {
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
}
}
// Получение целой части числа
int dectox_int(int a, int p, char *s)
{
int num = (int)a;
int rest = num % p;
num /= p;
if (num == 0)
{
s[0] = digit(rest); return 1;
}
int k = dectox_int(num, p, s);
s[k++] = digit(rest);
return k;
}
// Получение дробной части числа
void dectox_double(double a, int p, char *s)
{
int iter = 0;
int k = 0;
double a1 = a;
do {
a1 = a1 * p;
int num = (int)(a1);
s[k++] = digit(num);
a1 -= (int)a1;
iter++;
} while (a1 > 0.00000001 && iter < 10);
s[k] = '\0';
}
int main()
{
double a;
char s[80] = { 0 };
int p;
system("chcp 1251");
system("cls");
cout << "Введите число: ";
cin >> a;
cout << "Введите основание системы счисления: ";
cin >> p;
int k = dectox_int((int)a, p, s);
s[k++] = ',';
dectox_double(a — (int)a, p, &s[k]);
cout << s;
cin.get(); cin.get();
return 0;
}
Результат выполнения
Назад: Задачи и их решения
Комментариев к записи: 6