From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/global_objects/parseint/index.html | 215 +++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/parseint/index.html (limited to 'files/uk/web/javascript/reference/global_objects/parseint') diff --git a/files/uk/web/javascript/reference/global_objects/parseint/index.html b/files/uk/web/javascript/reference/global_objects/parseint/index.html new file mode 100644 index 0000000000..c92f886216 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/parseint/index.html @@ -0,0 +1,215 @@ +--- +title: parseInt() +slug: Web/JavaScript/Reference/Global_Objects/parseInt +tags: + - JavaScript + - Довідка + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/parseInt +--- +
{{jsSidebar("Objects")}}
+ +

Функція parseInt() розбирає рядковий аргумент і повертає число з вказаною основою системи числення.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-parseint.html")}}
+ + + +

Синтаксис

+ +
parseInt(string, radix);
+ +

Параметри

+ +
+
string
+
Значення, яке розбиратиметься. Якщо цей аргумент не є рядком, тоді він буде перетворений на рядок абстрактною операцією ToString. Пробільні символи на початку аргументу ігноруються.
+
radix  {{optional_inline}}
+
Ціле число між 2 і 36, яке вказує основу (в математичних системах числення) значення string. Будьте обережні — воно не дорівнює за замовчуванням 10!
+
Наведений нижче опис поясює більш детально, що відбувається, якщо значення radix не надане.
+
+ +

Повернене значення

+ +

Число, отримане з наданого рядка string.

+ +

Або {{jsxref("NaN")}}, коли

+ + + +

Опис

+ +

Функція parseInt перетворює перший аргумент на рядок, розбирає цей рядок, після чого повертає ціле число або NaN.

+ +

Якщо не NaN, повернене значення буде цілим числом, яке є першим аргументом, прочитаним як число у вказаній системі числення radix. (Наприклад, radix, що дорівнює 10, перетворює перший аргумент на десяткове число, 8 - на вісімкове, 16 на шістнадцяткове, і т. д.)

+ +

Для основ, більших за 10, літери англійського алфавіту позначають цифри, більші за 9. Наприклад, для шістнадцяткових цифр (основа 16) використовуються букви від A до F.

+ +

Якщо метод parseInt зустрічає символ, який не є числом у вказаній системі radix, він ігнорує цей символ та усі наступні символи та повертає ціле число, розібране до цієї позиції. parseInt обрізає числа до цілих значень. Пробільні символи попереду та в кінці є дозволеними.

+ +

Оскільки деякі числа використовують символ e у своєму рядковому представленні (наприклад, 6.022e23 для 6.022 × 1023), використання parseInt для обрізання чисел призведе до неочікуваних результатів при використанні на дуже великих чи дуже малих числах. parseInt не слід використовувати як заміну {{jsxref("Math.floor()")}}.

+ +

Якщо radix дорівнює undefined, 0 або його значення невизначене, JavaScript припускає наступне:

+ +
    +
  1. Якщо вхідний рядок string починається з "0x" або "0X" (нуль, за яким іде мала чи велика літера X), вважається, що radix дорівнює 16, а решта рядка розбирається як шістнадцяткове число.
  2. +
  3. Якщо вхідний рядок string починається з "0" (нуль), вважається, що radix дорівнює 8 (вісімкова система) або 10 (десяткова). Яку саме основу буде обрано, залежить від реалізації. ECMAScript 5 пояснює, що має використовуватись 10 (десяткова система), але ще не усі переглядачі це підтримують. З цієї причини завжди вказуйте radix при використанні parseInt.
  4. +
  5. Якщо вхідний рядок string починається з будь-якого іншого значення, основа дорівнює 10 (десяткова).
  6. +
+ +

Якщо перша літера не може бути перетворена на число, parseInt вертає NaN.

+ +

Для арифметичних цілей, значення NaN не є числом в жодній системі числення. Ви можете викликати функцію {{jsxref("isNaN")}}, щоб визначити, чи результат parseInt дорівнює NaN. Якщо NaN передається у арифметичні операції, результатом операції також буде NaN.

+ +

Щоб перетворити число на його рядковий літерал у певній системі числення, використовуйте вашеЧисло.toString(radix).

+ +
+

Застереження щодо {{jsxref("BigInt")}}parseInt перетворює {{jsxref("BigInt")}} на {{jsxref("Число", "Number")}} та в процесі втрачає точність, оскільки нечислові значення в кінці аргументу, в тому числі "n", відкидаються.

+
+ +

Вісімкові інтерпретації без значення radix

+ +

Хоча це не схвалюється у ECMAScript 3 та заборонене у ECMAScript 5, багато реалізацій інтерпретують числові рядки, що починаються з 0, як вісімкові. Наступне може перетворитись на вісімковий результат, а може й на десятковий. Завжди вказуйте radix, щоб запобігти цій ненадійній поведінці.

+ +
parseInt('0e0')  // 0
+parseInt('08')   // 0, бо '8' не вісімкова цифра.
+ +

Специфікація ECMAScript 5 функції parseInt більше не дозволяє реалізаціям сприймати рядки, що починаються з символу 0, як вісімкові значення.

+ +

ECMAScript 5 зазначає:

+ +
+

Функція parseInt створює цілочисельне значення, продиктоване інтерпретацією вмісту рядкового аргументу у відповідності до вказаної основи системи числення. Пробільний символ на початку рядка ігнорується. Якщо основа дорівнює undefined або 0, вона вважається рівною 10, окрім випадків, коли число починається з пар символів 0x або 0X, в такому випадку основа вважається рівною 16.

+
+ +

Це відрізняється від ECMAScript 3, де вісімкова інтерпретація просто не схвалюється (але дозволена).

+ +

У багатьох реалізаціях ця поведінка не адаптована станом на 2013 рік. І, оскільки старші веб-переглядачі мають підтримуватись, завжди вказуйте значення radix.

+ +

Більш строга функція розбору

+ +

Іноді корисно мати більш строгий спросіб розбору цілих чисел.

+ +

Регулярні вирази можуть стати в пригоді:

+ +
function filterInt(value) {
+  if (/^[-+]?(\d+|Infinity)$/.test(value)) {
+    return Number(value)
+  } else {
+    return NaN
+  }
+}
+
+console.log(filterInt('421'))                // 421
+console.log(filterInt('-421'))               // -421
+console.log(filterInt('+421'))               // 421
+console.log(filterInt('Infinity'))           // Infinity
+console.log(filterInt('421e+0'))             // NaN
+console.log(filterInt('421hop'))             // NaN
+console.log(filterInt('hop1.61803398875'))   // NaN
+console.log(filterInt('1.61803398875'))      // NaN
+ +

Приклади

+ +

Використання parseInt

+ +

Усі наступні приклади повертають 15:

+ +
parseInt('0xF', 16)
+parseInt('F', 16)
+parseInt('17', 8)
+parseInt(021, 8)
+parseInt('015', 10)   // але `parseInt(015, 10)` поверне 13
+parseInt(15.99, 10)
+parseInt('15,123', 10)
+parseInt('FXX123', 16)
+parseInt('1111', 2)
+parseInt('15 * 3', 10)
+parseInt('15e2', 10)
+parseInt('15px', 10)
+parseInt('12', 13)
+
+ +

Усі наступні приклади повертають NaN:

+ +
parseInt('Привіт', 8) // Зовсім не число
+parseInt('546', 2)    // Числа, інші, ніж 0 чи 1, недозволені у двійковій системі
+
+ +

Усі наступні приклади повертають -15:

+ +
parseInt('-F', 16)
+parseInt('-0F', 16)
+parseInt('-0XF', 16)
+parseInt(-15.1, 10)
+parseInt('-17', 8)
+parseInt('-15', 10)
+parseInt('-1111', 2)
+parseInt('-15e1', 10)
+parseInt('-12', 13)
+
+ +

Усі наступні приклади повертають 4:

+ +
parseInt(4.7, 10)
+parseInt(4.7 * 1e22, 10) // Дуже велике число стає 4
+parseInt(0.00000000000434, 10) // Дуже маленьке число стає 4
+
+ +

Якщо число більше за 1e+21 (включно) або менше за 1e-7 (включно), метод поверне 1. (при використанні основи 10).

+ +
parseInt(0.0000001,10);
+parseInt(0.000000123,10);
+parseInt(1e-7,10);
+parseInt(1000000000000000000000,10);
+parseInt(123000000000000000000000,10);
+parseInt(1e+21,10);
+ +

Наступний приклад повертає 224:

+ +
parseInt('0e0', 16)
+
+ +

Значення {{jsxref("BigInt")}} втрачають точність:

+ +
parseInt(900719925474099267n)
+// 900719925474099300
+ +

parseInt не працює з числовими роздільниками:

+ +
parseInt('123_456');
+// 123
+
+ +

Специфікації

+ + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-parseint-string-radix', 'parseInt')}}
+ +

Сумісність з веб-переглядачами

+ + + +

{{Compat("javascript.builtins.parseInt")}}

+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf