- 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
// Преобразует целое десятичное число (как вариант представления двоичного числа) в вещественное
Функция ПреобразоватьВЧисло(Знач ДесятичноеЧисло = 0, Точность = 1) Экспорт
СчБитов = 0;
Мантисса = 1;
Экспонента = ?(Точность = 2, -1023, -127);
Знак = 1;
ГраницаМантиссы = ?(Точность = 2, 52, 23);
ГраницаЭкспоненты = ?(Точность = 2, 63, 31);
Пока ДесятичноеЧисло >= 1 Цикл
Частное = Цел(ДесятичноеЧисло / 2);
Остаток = ДесятичноеЧисло % 2;
Если СчБитов < ГраницаМантиссы Тогда
Мантисса = Мантисса + Остаток * Pow(2, СчБитов - ГраницаМантиссы);
ИначеЕсли СчБитов < ГраницаЭкспоненты И СчБитов > ГраницаМантиссы - 1 Тогда
Экспонента = Экспонента + Остаток * Pow(2, СчБитов - ГраницаМантиссы);
Иначе
Знак = ?(Остаток = 1, -1, 1);
КонецЕсли;
ДесятичноеЧисло = Частное;
СчБитов = СчБитов + 1;
КонецЦикла;
Возврат Знак * Мантисса * Pow(2, Экспонента);
КонецФункции