Все
числа в языке JS вещественные. Представляем
числа в диапазоне от -2 в 53 степени до 2
в 53 степени. Все этого диапазона для
целых чисел будет теряться точность.
Для
побитовых операций числа сначала
преобразуются в 32-битный целый тип.
Числа
записанные прямо в коде программы
называются числовыми литералами. Мы
можем записывать числа в десятичной
системе счисления и 16-тиричной системе
счисления. Например, 0xfffcc. В
такой записи x может быть
в нижнем или верхнем регистре.
Используется
редко, но если число начинается с 0, то
это восьмиричная система счисления.
Есть
также числа с плавающей точкой. 12.45 или
.89 Есть экспоненты 1.34е4 или 4.5Е. Е может
быть в нижнем и верхнем регистре.
Экспонента может быть, как положительной,
так и отрицательной.
Для
преобразования вещественных чисел у
объекта Number есть несколько
методов. В JS есть
объекты-обертки.
var
n = 5000;
console.log(typeof n); // number
var N = new Number(4000); // это функция конструктор, она пишется с большой буквы
console.log(typeof N); // object
console.log(typeof N.toFixed(2)); // преобразуем в число с плавающей точкой. 2 - кол-во знаков после точки
// Эти методы можно вызывать не только у объектов, но и переменных содержащих значения простых типов и у литералов простых типов.
// Не с объектами это работает, потому что интерпритатор создает объекты-обертки на лету.
k = 5000;
console.log(typeof n.toFixed(2));
console.log(2 .toFixed(2)); // после 2 должен быть пробел
// Конструктор Number будет использоваться редко, т.к быстрее вызывать методы у самих переменных.
console.log(n.toExponential(4)); // 5.0000e+3. Для перевода в экспонинциальную форму, у которй в качестве параметра кол-во цифр после точки
console.log(n.toPrecision(3)); // 5.00e+3. Для вывода с определенной точностью.
// АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ
console.log(+10); // унарный плюс, который используется редко
console.log(-10); // унарный минус, который используется часто
// Операторы инкремента и декримента ++ и --
// Они имеют побочный эффект, т.к они изменяют переменную.
var i = 10;
console.log(++i); // 11. Это префиксный инкремент. Сначала увеличивает значение переменной, а потом возвращает.
console.log(i); // 11
console.log(i++); // Это постфиксный инкремент. Сначала возвращает значение переменной, а потом увеличивает ее значение.
console.log(i); // 12
// БИНАРНЫЕ ОПЕРАТОРЫ
console.log(5 + 10);
console.log(7 - 3);
console.log(5 * 9);
console.log(10 / 3); // это обычное деление, а не целочисленное
console.log(10 % 3); // остаток от деления. 1
var r = 100;
r = r + 20;
console.log(r); // 120
r = r * 20;
console.log(r);
// Более удобная запись!
// Подобный оператор есть для всех арифметических операторов: /=
var r = 100;
r += 20;
console.log(r); // 120
r *= 20;
console.log(r);
// ОПЕРАТОРЫ ОТНОШЕНИЯ
console.log(5 > 10); // false
console.log(5 < 10); // true
console.log(10 >= 10); // true
console.log(10 <= 10); // true
console.log(10 === 10); // === означает равенство. == означает равенство приведенных типов
console.log(10 !== 10);
console.log(10 === "10");
// У нас есть объект Math, который предоставляет методы для более сложных математических операций.
console.log(Math.sqrt(2)); // извлечение квадратного корня
console.log(Math.pow(3,5)); // возведение в степень
console.log(Math.PI);
console.log(Math.E);
// В JS при выходе из числового диапазона мы не получим ошибку, а получим infinity или -infinity.
// Деление на 0 не вызывает ошибки. Мы получим infinity или -infinity. Если делить 0 на 0, то мы получим NaN
// NaN дает деление бесконечости на бесконечость или извлечение корня из отрицательного числа.
// Сравнение NaN с самим собой дает false.
// NaN и infinity - идентификаторы.
// ОШИБКИ ОКРУГЛЕНИЯ.
console.log(0.2 + 0.1); // 0.30000000000000004
// Это проблема языка, который использует вещественные числа. Для вычислений лучше использовать целые числа.
console.log(typeof n); // number
var N = new Number(4000); // это функция конструктор, она пишется с большой буквы
console.log(typeof N); // object
console.log(typeof N.toFixed(2)); // преобразуем в число с плавающей точкой. 2 - кол-во знаков после точки
// Эти методы можно вызывать не только у объектов, но и переменных содержащих значения простых типов и у литералов простых типов.
// Не с объектами это работает, потому что интерпритатор создает объекты-обертки на лету.
k = 5000;
console.log(typeof n.toFixed(2));
console.log(2 .toFixed(2)); // после 2 должен быть пробел
// Конструктор Number будет использоваться редко, т.к быстрее вызывать методы у самих переменных.
console.log(n.toExponential(4)); // 5.0000e+3. Для перевода в экспонинциальную форму, у которй в качестве параметра кол-во цифр после точки
console.log(n.toPrecision(3)); // 5.00e+3. Для вывода с определенной точностью.
// АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ
console.log(+10); // унарный плюс, который используется редко
console.log(-10); // унарный минус, который используется часто
// Операторы инкремента и декримента ++ и --
// Они имеют побочный эффект, т.к они изменяют переменную.
var i = 10;
console.log(++i); // 11. Это префиксный инкремент. Сначала увеличивает значение переменной, а потом возвращает.
console.log(i); // 11
console.log(i++); // Это постфиксный инкремент. Сначала возвращает значение переменной, а потом увеличивает ее значение.
console.log(i); // 12
// БИНАРНЫЕ ОПЕРАТОРЫ
console.log(5 + 10);
console.log(7 - 3);
console.log(5 * 9);
console.log(10 / 3); // это обычное деление, а не целочисленное
console.log(10 % 3); // остаток от деления. 1
var r = 100;
r = r + 20;
console.log(r); // 120
r = r * 20;
console.log(r);
// Более удобная запись!
// Подобный оператор есть для всех арифметических операторов: /=
var r = 100;
r += 20;
console.log(r); // 120
r *= 20;
console.log(r);
// ОПЕРАТОРЫ ОТНОШЕНИЯ
console.log(5 > 10); // false
console.log(5 < 10); // true
console.log(10 >= 10); // true
console.log(10 <= 10); // true
console.log(10 === 10); // === означает равенство. == означает равенство приведенных типов
console.log(10 !== 10);
console.log(10 === "10");
// У нас есть объект Math, который предоставляет методы для более сложных математических операций.
console.log(Math.sqrt(2)); // извлечение квадратного корня
console.log(Math.pow(3,5)); // возведение в степень
console.log(Math.PI);
console.log(Math.E);
// В JS при выходе из числового диапазона мы не получим ошибку, а получим infinity или -infinity.
// Деление на 0 не вызывает ошибки. Мы получим infinity или -infinity. Если делить 0 на 0, то мы получим NaN
// NaN дает деление бесконечости на бесконечость или извлечение корня из отрицательного числа.
// Сравнение NaN с самим собой дает false.
// NaN и infinity - идентификаторы.
// ОШИБКИ ОКРУГЛЕНИЯ.
console.log(0.2 + 0.1); // 0.30000000000000004
// Это проблема языка, который использует вещественные числа. Для вычислений лучше использовать целые числа.
Комментариев нет:
Отправить комментарий