Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e1afd42

Browse files
Merge pull request #703 from Andrii256/01-05-02-number
Fix number (01-05-02)
2 parents 1afb22e + 26337d7 commit e1afd42

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

‎1-js/05-data-types/02-number/article.md‎

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ let billion = 1_000_000_000;
3131
```js run
3232
let billion = 1e9; // 1 мільярд, буквально: 1 та 9 нулів
3333

34-
alert( 7.3e9 ); // 7.3 мільярдів (таке ж саме що 7300000000 чи 7_300_000_000)
34+
alert( 7.3e9 ); // 7.3 мільярдів (те ж саме, що й 7300000000 чи 7_300_000_000)
3535
```
3636

3737
Іншими словами, `"e"` помножує число на `1` із заданим числом нулів.
@@ -89,30 +89,30 @@ let b = 0o377; // вісімкова форма 255
8989
alert( a == b ); // true, те саме число 255 з обох сторін
9090
```
9191

92-
Є лише 3 системи числення з такою підтримкою. Для інших систем числення ми повинні використовувати функцію `parseInt` (яку ми побачимо далі в цьому розділі).
92+
Таким способом підтримуються лише 3 системи числення. Для інших систем числення ми повинні використовувати функцію `parseInt` (яку ми побачимо далі в цьому розділі).
9393

9494
## toString(base)
9595

96-
Метод `num.toString(base)` повертає рядкове представлення `num` в системі числення із заданим `base`.
96+
Метод `num.toString(base)` повертає `num` у вигляді рядка, в якому вказане це ж число, але в системі числення із заданим `base`.
9797

9898
Наприклад:
9999
```js run
100100
let num = 255;
101101

102-
alert( num.toString(16) ); // ff
103-
alert( num.toString(2) ); // 11111111
102+
alert( num.toString(16) ); // "ff"
103+
alert( num.toString(2) ); // "11111111"
104104
```
105105

106106
`base` може бути від `2` до `36`. За замовчуванням це `10`.
107107

108108
Загальні випадки використання для цього є:
109109

110110
- **base=16** використовується для шістнадцяткових кольорів, кодування символів тощо, цифри можуть бути `0..9` або `A..F`.
111-
- **base=2** в основному для налагодження бітових операцій, цифри можуть бути `0` або `1`.
112-
- **base=36** є максимальним, цифри можуть бути `0..9` або `A..Z`. Весь латинський алфавіт використовується для позначення числа. Комічно, але користь від системи для найбільших чисел полягає у перетворенні довгого числового ідентифікатора у щось коротше, наприклад, для генерації короткого URL. Для цього достатньо представити його в системі числення з базою `36`:
111+
- **base=2** використовується в основному для налагодження бітових операцій, цифри можуть бути `0` або `1`.
112+
- **base=36** є максимальною, цифри можуть бути `0..9` або `A..Z`. Для позначення такого числа в якості цифер використовується увесь латинський алфавіт. Кумедно, але переведення числа в таку систему числення буває корисним коли ми маємо дуже довгий числовий ідентифікатор і хочемо перетворити його на щось коротше, бо хочемо зробити URL коротшим. Для цього достатньо представити його в системі числення з базою `36`:
113113

114114
```js run
115-
alert( 123456..toString(36) ); // 2n9c
115+
alert( 123456..toString(36) ); // "2n9c"
116116
```
117117

118118
```warn header="Дві крапки для виклику методу"
@@ -181,7 +181,7 @@ alert( num.toString(2) ); // 11111111
181181
alert( num.toFixed(1) ); // "12.4"
182182
```
183183

184-
Зверніть увагу, що результат `toFixed` -- це рядок. Якщо десяткова частина коротша, ніж потрібно, нулі додаються в кінці:
184+
Зверніть увагу, що результат `toFixed` -- це рядок. І в кінці можуть додаватись нулі якщо десяткова частина коротша, ніж потрібно:
185185

186186
```js run
187187
let num = 12.34;
@@ -192,7 +192,7 @@ alert( num.toString(2) ); // 11111111
192192

193193
## Неточні розрахунки
194194

195-
Із середини, число представлено у 64-бітному форматі [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754), тому для його зберігання треба саме 64 біти: 52 з них використовуються для зберігання цифр, 11 -- відповідають за позицію десяткової крапки (для цілих чисел вони дорівнюють нулю), а 1 біт -- для знака.
195+
Із середини, число представлено у 64-бітному форматі [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754), тому для його зберігання треба саме 64 біти: 52 з них використовуються для зберігання цифр, 11 -- відповідають за позицію десяткової крапки (для цілих чисел вони дорівнюють нулю), а 1 біт -- для полярності (тобто інформації чи йде перед числом знак мінус, чи ні).
196196

197197
Якщо число занадто велике, та переповнює 64-біти, воно буде перетворене на спеціальне числове значення `Infinity`(Нескінченність):
198198

@@ -220,7 +220,7 @@ alert( 0.1 + 0.2 ); // 0.30000000000000004
220220

221221
Але чому так відбувається?
222222

223-
Число зберігається в пам’яті у його двійковій формі, послідовність бітів - одиниць і нулів. Але дроби на кшталт `0.1`, `0.2`, які виглядають просто в десятковій системі числення, насправді є нескінченними дробами у своїй двійковій формі.
223+
Число зберігається в пам’яті у його двійковій формі, як послідовність бітів - одиниць і нулів. Але дроби на кшталт `0.1`, `0.2`, які виглядають просто в десятковій системі числення, насправді є нескінченними дробами у своїй двійковій формі.
224224

225225
Іншими словами, що таке `0.1`? Це одиниця розділена на десять `1/10` -- одна десята. У десятковій системі такі числа досить легко представити, але якщо порівняти його з однією третиною: `1/3`, то ми стикаємось з нескінченним дробом `0.33333(3)`.
226226

@@ -252,7 +252,7 @@ let sum = 0.1 + 0.2;
252252
alert( sum.toFixed(2) ); // "0.30"
253253
```
254254

255-
Зауважте, що `toFixed` завжди повертає рядок, щоб число гарантовано мало дві цифри після десяткової крапки. Це насправді зручно, якщо у нас є електронні покупки та нам потрібно показати `0ドル.30`. В інших випадках ми можемо використовувати одинарний плюс, щоб для приведення його до числа:
255+
Зауважте, що `toFixed` завжди повертає рядок, щоб число гарантовано мало дві цифри після десяткової крапки. Та й взагалі це зручно, якщо у нас є електронні покупки та нам потрібно показати `0ドル.30`. В інших випадках ми можемо використовувати одинарний плюс, якщо хочемо результат `toFixed` конвертувати в число:
256256

257257
```js run
258258
let sum = 0.1 + 0.2;
@@ -268,7 +268,7 @@ alert( (0.28 * 100 + 0.14 * 100) / 100); // 0.4200000000000001
268268

269269
Отже, підхід множення/ділення зменшує помилку, але не видаляє її повністю.
270270

271-
Іноді можна спробувати уникнути проблем з дробами. Якщо ми маємо справу з магазином, то можемо зберігати ціни в центах замість доларів. Але що робити, якщо ми застосуємо знижку в розмірі 30%? На практиці повністю уникнути дробів вдається досить рідко. Просто округліть їх, щоб вирізати "хвости", коли це потрібно.
271+
Іноді можна спробувати уникнути проблем з дробами. Якщо ми маємо справу з магазином, то можемо зберігати ціни в центах замість доларів. Але що робити, якщо ми застосуємо знижку в розмірі 30%? На практиці повністю уникнути дробів вдається досить рідко. Тому просто округляйте їх, щоб відрізати "хвости", коли це потрібно.
272272

273273
````smart header="Цікавий факт"
274274
Спробуйте запустити:
@@ -286,7 +286,7 @@ JavaScript не викликає помилку в таких випадках.
286286
```smart header="Два нулі"
287287
Ще одним кумедним наслідком внутрішньої реалізації чисел є наявність двох нулів: `0` і `-0`.
288288
289-
Це тому, що знак представлений одним бітом, тому його можна встановити або не встановити для будь-якого числа, включаючи нуль.
289+
Це тому, що в усіх чисел є один біт для знака. А тому знак можна встановити або не встановити для будь-якого числа, навіть для нуля.
290290
291291
У більшості випадків відмінність непомітна, оскільки оператори підходять до них як до однакових.
292292
```
@@ -308,13 +308,13 @@ JavaScript не викликає помилку в таких випадках.
308308
alert( isNaN("str") ); // true
309309
```
310310

311-
Але чи потрібна нам ця функція? Чи не можемо ми просто використати порівняння `=== NaN`? Вибачте, але відповідь -- ні. Значення `NaN` унікальне тим, що воно нічому не дорівнює, включаючи себе:
311+
Але чи потрібна нам ця функція? Чи не можемо ми просто використати порівняння `=== NaN`? Вибачте, але відповідь -- ні. Значення `NaN` унікальне тим, що воно нічому не дорівнює, навіть самому собі:
312312

313313
```js run
314314
alert( NaN === NaN ); // false
315315
```
316316

317-
- `isFinite(value)` перетворює свій аргумент в число і повертає `true`, якщо це звичайне число, та `false`, якщо `NaN/Infinity/-Infinity`:
317+
- `isFinite(value)` перетворює свій аргумент в число і повертає `true`, якщо це звичайне число. Або `false`, якщо `NaN/Infinity/-Infinity`:
318318

319319
```js run
320320
alert( isFinite("15") ); // true
@@ -328,7 +328,7 @@ JavaScript не викликає помилку в таких випадках.
328328
```js run
329329
let num = +prompt("Enter a number", '');
330330
331-
// буде істинним, якщо ви не введете Infinity, -Infinity чи не число
331+
// буде true, якщо ви не введете Infinity, -Infinity чи NaN
332332
alert( isFinite(num) );
333333
```
334334

@@ -364,12 +364,12 @@ alert( isFinite(num) );
364364
````
365365

366366
```smart header="Порівняння з `Object.is`"
367-
Існує спеціальний вбудований метод `Object.is`, який порівнює значення як `===`, але є більш надійним для двох виключень:
367+
Існує спеціальний вбудований метод `Object.is`, який порівнює значення як `===`, але є більш надійним для двох виняткових випадків:
368368
369369
1. Працює з `NaN`: `Object.is(NaN, NaN) === true`, і це добре.
370370
2. Значення `0` і` -0` різні: `Object.is(0, -0) === false`, технічно це правда, оскільки внутрішньо число має біт знаків, який може бути різним, навіть якщо всі інші біти -- нулі.
371371
372-
У всіх інших випадках `Object.is(a, b)` те саме, що `a === b`.
372+
У всіх інших випадках `Object.is(a, b)` поверне те саме, що й `a === b`.
373373
374374
Ми згадуємо тут `Object.is`, оскільки він часто використовується в специфікації JavaScript. Коли для внутрішнього алгоритму потрібно порівняти два значення, щоб вони були абсолютно однаковими, він використовує `Object.is` (ще його називають [SameValue](https://tc39.github.io/ecma262/#sec-samevalue)).
375375
```
@@ -389,7 +389,7 @@ alert( +"100px" ); // NaN
389389

390390
Ось для чого призначені `parseInt` та `parseFloat`.
391391

392-
Вони "читають" число з рядка, до поки можуть, у разі помилки зчитане число повертається. Функція `parseInt` повертає ціле число, тоді як `parseFloat` повертає число з плаваючою крапкою:
392+
Вони допоки можуть -- доти "читають" число з рядка. І у разі помилки зчитане число повертається. Функція `parseInt` повертає ціле число, тоді як `parseFloat` повертає число з плаваючою крапкою:
393393

394394
```js run
395395
alert( parseInt('100px') ); // 100
@@ -450,9 +450,9 @@ JavaScript має вбудований [Math](https://developer.mozilla.org/uk/d
450450

451451
## Підсумки
452452

453-
Щоб записати числа з багатьма нулями:
453+
Для написання числа з багатьма нулями:
454454

455-
- Додайте `"e"` з числом нулів до числа. Як і:`123e6` те саме, що `123` з 6 нулями `123000000`.
455+
- Додайте `"e"` з кількістю нулів до числа. Наприклад `123e6`-- це те саме, що `123` з 6 нулями `123000000`.
456456
- Від’ємне число після `"е"` призводить до ділення числа на 1 із заданими нулями. Наприклад `123e-6` означає `0.000123` (`123` мільйони).
457457

458458
Для різних систем числення:
@@ -463,10 +463,10 @@ JavaScript має вбудований [Math](https://developer.mozilla.org/uk/d
463463

464464
Для регулярних тестів чисел:
465465

466-
- `isNaN(value)` перетворює свій аргумент на число, а потім перевіряє його на `NaN`
467-
- `Number.isNaN(value)` перевіряє, чи належить його аргумент до типу `number`, і якщо так, перевіряє його на `NaN`
468-
- `isFinite(value)` перетворює свій аргумент на число, а потім перевіряє, чи не є `NaN/Infinity/-Infinity`
469-
- `Number.isFinite(value)` перевіряє, чи належить його аргумент до типу `number`, і якщо так, перевіряє, чи не є `NaN/Infinity/-Infinity`
466+
- `isNaN(value)` перетворює свій аргумент на число, а потім перевіряє чи він `NaN`
467+
- `Number.isNaN(value)` перевіряє, чи належить його аргумент до типу `number`, і якщо так, перевіряє чи він `NaN`
468+
- `isFinite(value)` перетворює свій аргумент на число, а потім перевіряє, чи не є він `NaN/Infinity/-Infinity`
469+
- `Number.isFinite(value)` перевіряє, чи належить його аргумент до типу `number`, і якщо так, перевіряє, чи не є він `NaN/Infinity/-Infinity`
470470

471471
Для перетворення значень на зразок `12pt` та `100px` у число:
472472

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /