1 ноября 2016 г.

День 7. Хекслет. Числа

В уроке рассказывалось про числа и как с ними работать в JavaScript. Какие рассматривались подтемы?

1. Числа с плавающей точкой.

При 0,3 – 0,2 получится 0,0999999 и т. д.

Почему так? Почему не 0,1? Говорят, что количество вещественных чисел бесконечно, а память компа ограниченна, а память программы еще меньше, поэтому физически невозможно вместить все числа вообще. Поэтому придумали такой компромисс, чтобы уместиться в размер памяти, выделяемой для программы. Суть компромисса — представлять как можно больше чисел в пределах отведенной памяти. Такая фигня распространяется на числа с плавающей точкой.

2. IEEE754.

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

Этот стандарт описывает:
— формат чисел (как они представляются);
— специальные значения (бесконечность, не числа, нули);
— операции (тут не понял; мож, потом узнаю);
— исключительные операции (деление на ноль и подобное прочее).

3. Бесконечность (Infinity)

Это первая особенность стандарта почему-то.

Тут просят обратить внимание на то, что бесконечность может быть как положительной, так и отрицательной.

1 / 0 — получается положительная бесконечность.
–1 / 0 = отрицательная бесконечность.

4. NaN (не число) — Not a Number

Зачем оно надо? Ой, трудно для моего понимания. Ща попробую. Для того, чтобы операции в определенных случаях, где невозможно получить число, возвращали какое-то вычисление.

0 / 0
3 % 0
0 * бесконечность
–бесконечность + бесконечность
3 / "строка" — тоже будет NaN

Еще раз попытка объяснить самому себе: не число при попытке взаимодействия с числом дает не число, то есть NaN.

5. +0 и –0.

В стандарте есть положительный и отрицательный нули.

В некоторых редких операциях это важно.

1 / (1 / бесконечность) = бесконечность
1 / (1 / –бесконечность) = –бесконечность

При чем тут бесконечности — я не понял.

6. Нормализованная форма или Экспоненциальная форма.

Буду встречаться числа вроде 1,23е5. Их пугаться не надо, читаются они просто. Это 123000.
Часть до буквы "е" называется мантиссой, после — степенью. Получается 1,23 * 10^5.
Может встречаться и так: 1,23е+5 — это то же самое, что и без плюса.

* * *

Ух. Все на сегодня. Итого минут 30. А это значит 275 + 30 = 305 минут программиста. Или 5 часов из 10000 до профессионала.

Комментариев нет:

Отправить комментарий