- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
void dwflt_to_str(DWORD dw, char *pch, int &nsmb)
{
DWORD dw_a = dw;
char ch_a;
char tbldec[] = "0123456789";
nsmb = 0;
if (dw_a == 0) { pch[0] = '0'; nsmb++; goto lab2; }
while (dw_a != 0)
{
pch[nsmb] = tbldec[dw_a%10]; dw_a /= 10; nsmb++;
}
dw_a = nsmb/2;
while (dw_a)
{
ch_a = pch[nsmb - dw_a]; pch[nsmb - dw_a] = pch[dw_a - 1]; pch[dw_a - 1] = ch_a; dw_a--;
}
lab2:
pch[nsmb] = 0;
}
const int n_fr2 = 7; // - эта константа определяет фиксированное число цифр после точки в выводимой строке, представляющей float.
void float_to_str(float flt, char *pchar, int &nsmb)
{
int i, deg, ns_int, ns_frac;
double frac_dbl;
DWORD dw_f, mant, intg, fract;
DW_FL f_flt;
char szfl_int[16], szfl_frac[16];
f_flt.fl = flt;
dw_f = f_flt.dw;
if (dw_f == 0) { pchar[0] = '0'; pchar[1] = '.'; pchar[2] = '0'; pchar[3] = 0; nsmb = 3; return; }
if (dw_f & 0x80000000) { pchar[0] = '-'; } else { pchar[0] = '+'; }
deg = int((dw_f & 0x7F800000) >> 23) - 127;
mant = (dw_f & 0x007FFFFF) | 0x00800000;
if (deg == 0) { intg = 1; fract = dw_f & 0x007FFFFF; goto lab_1; }
if (deg > 0) { intg = mant >> (23 - deg); fract = ((dw_f & 0x007FFFFF) << deg) & 0x007FFFFF; goto lab_1; }
if (deg < 0) { intg = 0; fract = ((dw_f & 0x007FFFFF) | 0x00800000) >> (-deg); }
lab_1:
frac_dbl = double(fract)*1.1920928955078125;// 1.1920928955078125 = 10^n_fr2 / 2^23 = 10^7 / 2^23
fract = (int)frac_dbl;
dwflt_to_str(intg, szfl_int, ns_int);
nsmb = 1; i = ns_int; while (i) { pchar[i + 1] = szfl_int[i]; i--; } pchar[1] = szfl_int[0];
nsmb += ns_int; pchar[nsmb] = '.'; nsmb++;
dwflt_to_str(fract, szfl_frac, ns_frac); szfl_frac[n_fr2] = 0;
i = ns_frac; while (i) { szfl_frac[6 - ns_frac + i] = szfl_frac[i - 1]; i--; }
i = n_fr2 - ns_frac; while (i) { szfl_frac[i - 1] = '0'; i--; }
i = n_fr2 - 1; while (i) { pchar[nsmb + i] = szfl_frac[i]; i--; } pchar[nsmb] = szfl_frac[0];
nsmb += n_fr2; pchar[nsmb] = 0;
}
void float_to_str_exp(float flt, char *pchar, int &nsmb)
{
int i, deg, poli, ns_int, ns_frac, ns_poli;
double frac_dbl;
DWORD dw_f, mant, intg, fract;
DW_FL f_flt;
char szfl_int[16], szfl_frac[16];
f_flt.fl = flt;
dw_f = f_flt.dw;
if (dw_f == 0) { pchar[0] = '0'; pchar[1] = '.'; pchar[2] = '0'; pchar[3] = 0; nsmb = 3; return; }
if (dw_f & 0x80000000) { pchar[0] = '-'; } else { pchar[0] = '+'; }
deg = int((dw_f & 0x7F800000) >> 23) - 127;
mant = (dw_f & 0x007FFFFF) | 0x00800000;
if (deg == 0) { intg = 1; fract = dw_f & 0x007FFFFF; goto lab_1; }
if (deg > 0) { intg = mant >> (23 - deg); fract = ((dw_f & 0x007FFFFF) << deg) & 0x007FFFFF; goto lab_1; }
if (deg < 0) { intg = 0; fract = ((dw_f & 0x007FFFFF) | 0x00800000) >> (-deg); }
lab_1:
frac_dbl = double(fract)*1.1920928955078125;// 1.1920928955078125 = 10^n_fr2 / 2^23 = 10^7 / 2^23
fract = (int)frac_dbl;
dwflt_to_str(intg, szfl_int, ns_int);
dwflt_to_str(fract, szfl_frac, ns_frac); szfl_frac[n_fr2] = 0;
if (intg != 0)
{
nsmb = 1; i = ns_int; while (i) { pchar[i + 2] = szfl_int[i]; i--; } pchar[1] = szfl_int[0];
pchar[2] = '.'; nsmb += ns_int + 1; poli = ns_int - 1;
}
else
{
i = ns_frac - 1; while (i) { pchar[2 + i] = szfl_frac[i]; i--; } pchar[1] = szfl_frac[0];
pchar[2] = '.'; nsmb = 3;//nsmb += ns_frac + 1;
poli = ns_frac - n_fr2 - 1; goto lab_2;
}
i = ns_frac; while (i) { szfl_frac[6 - ns_frac + i] = szfl_frac[i - 1]; i--; }
i = n_fr2 - ns_frac; while (i) { szfl_frac[i - 1] = '0'; i--; }
i = n_fr2 - 1; while (i) { pchar[nsmb + i] = szfl_frac[i]; i--; } pchar[nsmb] = szfl_frac[0];
lab_2:
nsmb += n_fr2; pchar[nsmb] = 'E';
int_to_str(poli, &pchar[nsmb + 1], ns_poli);
nsmb += ns_poli + 1; pchar[nsmb] = 0;
}
LispGovno 15.01.2013 11:04 # −2
kyzi007 15.01.2013 11:16 # 0
bormand 15.01.2013 11:50 # +5
TarasB 15.01.2013 12:16 # +10
LispGovno 15.01.2013 12:33 # +1
someone 15.01.2013 13:26 # −1
Fixed?
bormand 15.01.2013 13:40 # 0
FireBurd 16.01.2013 18:10 # 0
но строку ведь можно переполнить и сверху (целая часть), например 40 разрядным числом.
Lure Of Chaos 16.01.2013 00:42 # +2
Vindicar 16.01.2013 09:05 # +3
absolut 16.01.2013 10:39 # +1
что-то из этой оперы было у Кармака из id software.
LispGovno 16.01.2013 10:41 # 0
В наше время молодежь Кармака не знает. А ведь это герой ГДсру
Yuuri 16.01.2013 19:23 # +2
SemaReal 22.03.2018 15:13 # 0
TarasB 23.01.2013 17:15 # +1
> что-то из этой оперы было у одного чувака по фамилии Кармак, его никто не знает, но он в id software работал
bormand 23.01.2013 17:26 # +1
roman-kashitsyn 23.01.2013 17:28 # +4
bormand 23.01.2013 17:36 # 0
3.14159265 23.01.2013 17:52 # +2
эксель!!!
http://www.youtube.com/watch?v=nwg9eLHZZRo
Ай-ай-ай. Совсем не знают классики. Чего ж ты excel не написал. Тонко получилось бы.
roman-kashitsyn 23.01.2013 19:15 # 0
TarasB 24.01.2013 17:16 # +2
3.14159265 24.01.2013 17:20 # +1
TarasB 24.01.2013 20:26 # 0
Положительной в точных науках тоже, правда, не обнаружено, в отличие от искусства.
LispGovno 24.01.2013 21:29 # +1
Ты про эплоёбов? Комент сейчас уйдет в минуса.
Знаешь что я тебе скажу? Купил я значит макбук. Там стоит какой то урезанный по самое немогу линус. Я за линус заплатил бабки! Я долбаёб! Настраивать под себя ничего нельзя. Там какаято долбонутая белая тема окошек и тоже не меняется. И они сказали, что это для людей искуства и дизайнеров. Вот пидорасы! Менять конфиги нельзя, так как я тогда нарушу лицензию. Кто додумался по нажатию Энтера переименовывать файл? Почти за все программы из менеджера пакетов нужно платить. Вообщем у меня батхерт. Ждите новых стори. Хотя не ждите. Снесу и поставлю Линус.
bormand 24.01.2013 21:37 # +1
Угу. Надо было в магазине попросить включить и немного поиграться с ним. Ну и почитать отзывы и описания перед тем как покупать...
3.14159265 24.01.2013 21:40 # +2
>Вот пидорасы!
Еще продукцию эппл очень уважают говноеды.
defecate-plusplus 24.01.2013 21:57 # +2
LispGovno 24.01.2013 22:44 # +3
Макось снесу и поставлю нормальный дистр линукса с копирайтами говна.
Если мимо меня будет проходить какой-нибудь питушок, то он поймет, что я очень крут, так как пользуюсь продукцией эпла.
Макбук для людей искусства, а я книгу "искусство программирования" читал.
defecate-plusplus 24.01.2013 23:04 # +3
LispGovno 23.01.2013 17:28 # −2
bormand 23.01.2013 17:37 # +1
Комсомолец, спортсмен, и просто красавец.
absolut 25.01.2013 10:26 # 0
>TarasB Позавчера #
Мне сразу вспомнился твой ответ про говно на анализы.
SemaReal 21.03.2018 15:09 # −1
dwarf_with_beer 22.01.2013 23:06 # +2
inho 21.03.2018 09:36 # 0