JavaScript. Функції представлення об’єкту Number в різних нотаціях

Функції представлення об’єкту Number в різних нотаціях. Функції toExponential(), toFixed(), toLocaleString(), toPrecision(), toString(), valueOf()


Зміст


Пошук на інших ресурсах:

1. Огляд функцій представлення об’єкту Number

Об’єкт Number має ряд функцій, що дозволяють представляти його в різних формах (нотаціях):

  • toExponential();
  • toFixed();
  • toLocaleString();
  • toPrecision();
  • toString();
  • valueOf().

 

2. Функція Number.toExponential(). Отримати рядок з експоненційною формою числа

Функція toExponential() дозволяє отримати рядок у вигляді експоненційної нотації (форми). Функція має декілька варіантів оголошень

value.toExponential()
value.toExponential(frac_digits)

тут

  • value – числове значення типу Number, яке потрібно представити в експоненційній формі;
  • frac_digits – цілочисельне значення, яке визначає кількість цифр після десяткової коми. Якщо аргумент frac_digits опущений, то вказується стільки цифр, скільки необхідно для унікального представлення значення value. Значення frac_digits повинно бути в межах від 0 до 100 включно. Якщо задати значення frac_digits яке виходить за ці межі, то буде згенероване виключення RangeError.

Характерні особливості використання методу:

  • якщо викликати метод для об’єкту який не є об’єктом Number, то буде згенероване виключення TypeError;
  • якщо потрібно використати метод для числового літералу який не має десяткової точки, то перед крапкою ставиться символ пробіл ‘ ‘;
  • якщо число містить більше цифр, ніж вказано в аргумент frac_digit, то це число округляється до найближчого числа. Кількість цифр у цьому найближчому числі рівне frac_digit.

Приклад.

// Функція toExponential() - отримати число з експоненційною нотацією

// 1. Використання функції без параметрів
var a = 5/6
var res
res = a.toExponential() // res = 8.333333333333334e-1

res = 1234.235.toExponential() // res = 1.234235e+3
res = Number(228/11).toExponential() // res = 2.0727272727272727e+1
res = Number(345678).toExponential() // res = 3.45678e+5

// 2. Використання функції з параметром точності
res = 1234.56789.toExponential(3) // res = 1.235e+3
res = 1234.56789.toExponential(1) // res = 1.2e+3
res = (10000/3).toExponential(0) // res = 3e+3

// 3. Вказання з символом 'пробіл' для коректної інтерпретації
res = 100 .toExponential() // 1e+2

 

3. Функція Number.toFixed(). Отримати число, використовуючи запис з фіксованою точкою

Функція toFixed() дозволяє отримати рядкове представлення числа з заданою кількістю знаків після коми. Функція має дві форми використання

value.toFixed()
value.toFixed(digits)

тут

  • value – числове значення типу Number, яке потрібно представити з фіксованою точністю;
  • digits – кількість знаків після коми, які будуть отримані (відображатись). Значення digits повинно бути в межах від 0 до 20 включно. Якщо аргумент digits не вказаний, то він обробляється як 0. Якщо значення digits виходить за межі [0; 20], то генерується виключення RangeError.

Особливості використання функції:

  • якщо викликати функцію для значення що не є типом Number, то буде згенеровано виключення TypeError;
  • функція не повертає експоненційне представлення об’єкту Number;
  • якщо кількість десяткових цифр після коми у числі Number більше значення digits, то результат округляється;
  • якщо кількість десяткових цифр після коми у числі Number менше значення digits, то результат доповнюється нулями;
  • якщо value≥1e+21, то викликається функція Number.prototype.toString() і функція toFixed() повертає експоненційне представлення числа.

Приклад.

// Функція toFixed() - отримати число з заданою точністю

// 1. Використання функції з 1 параметром
var a = 5/6
var res = Number.parseFloat(a).toFixed(2) // res = 0.83

a = 1/3
res = a.toFixed(4) // res = 0.3333

res = 0.2.toFixed(5) // res = 0.20000
res = Number(2.830239).toFixed(0) // res = 3
res = Number.parseFloat(-1.88).toFixed(8) // res = -1.88000000

// 2. Використання функції без параметрів
a = 15.203367
res = a.toFixed() // res = 15
res = 109.209.toFixed() // res = 109

// 3. Задавання значення більше 1e+21
a = 1e+21 + 1
res = a.toFixed() // res = 1e+21
res = a.toFixed(7) // res = 1e+21

 

4. Функція Number.toLocaleString(). Отримати рядок з представленням числа відповідно до заданої мови

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

value.toLocaleString()
value.toLocaleString(locales)
value.toLocaleString(locales, options)

тут

  • value – значення, яке обробляється;
  • locales – задає мову, згідно з якою визначається результуючий рядок;
  • options – аргумент, що формує деталі представлення локалі. Аргумент options задається у вигляді пар типу key:value, що взяті в фігурні дужки { } (дивіться приклад нижче). Щоб отримати більш повну інформацію про використання аргументу options, потрібно звернутись до документації JavaScript.

Якщо функція викликається без параметрів, то форма результуючого рядка повністю залежить від реалізації.

Приклад.

// Функція toLocaleString()

// 1. Використання функції без параметрів

var a = 2345
var res = a.toLocaleString() // res = "2,345" - локаль U.S. English

// 2. Використання функції з 1 параметром toLocaleString(locales)

// 2.1. Перевірка, чи використовується задана локаль в браузері
a = 1282
try {
  res = a.toLocaleString('en-IN') // res = "1,282"
}
catch (e) {
  res = e.name("RangeError")
}

// 2.2. Задавання формату локалі без перевірки
res = a.toLocaleString("uk-UA") // res = "1 282"
res = a.toLocaleString("ru-RU") // res = "1 282"
res = a.toLocaleString("en-US") // res = "1,282"

// 3. Використання функції з 2 параметрами
//   toLocaleString(locales, options)

// 3.1. Встановити формат валюти США для заданого числа
a = 28783.59
var opt = { style : 'currency', currency : 'USD' } // Сформувати опції
res = a.toLocaleString("en-US", opt) // res = "$28,783.59"

// 3.2. Встановити науковий формат
opt = { notation : 'scientific'} // Сформувати опції
res = a.toLocaleString("en-GB", opt) // res = "2.878E4"

// 3.3. Встановити цифрову систему 'arabext'
opt = { numberingSystem : 'arabext' }
res = a.toLocaleString("ar-EN", opt) // res = "۲۸٬۷۸۳٫۵۹"

 

5. Функція Number.toPrecision(). Отримати рядок на основі числа з заданою точністю

Функція toPrecision() повертає рядок, що представляє об’єкт Number з заданою точністю. Дана функція може повертати рядок у фіксованій нотації та експоненціальній нотації.
Функція має два випадки виклику

value.toPrecision()
value.toPrecision(precision)

тут

  • value – об’єкт Number;
  • precision – цілочисельне значення, що визначає кількість значущих цифр. Значення precision має бути в межах від 1 до 100 включно. Якщо значення precision встановити за межами [1; 100], то буде згенероване виключення RangeError.

Особливості виклику функції:

  • якщо функція викликається без параметрів (без аргументу precision), то дана функція працює так само як Number.toString();
  • якщо аргумент precision не є цілим числом, то він округляється до найближчого цілого числа.

Приклад.

// Функція toPrecision()

// 1. Використання функції без параметрів
var a = 12345.6789
var res = a.toPrecision() // res = "12345.6789"

// 2. Використання функції з аргументом precision
a = 1234.56789
res = a.toPrecision(1) // res = "1e+3"
res = a.toPrecision(2) // res = "1.2e+3"
res = a.toPrecision(3) // res = "1.23e+3"
res = a.toPrecision(4) // res = "1235"
res = a.toPrecision(5) // res = "1234.6"
res = a.toPrecision(6) // res = "1234.57"
res = a.toPrecision(7) // res = "1234.568"
res = a.toPrecision(8) // res = "1234.5679"
res = a.toPrecision(9) // res = "1234.56789"
res = a.toPrecision(10) // res = "1234.567890"
res = a.toPrecision(11) // res = "1234.5678900"

 

6. Функція Number.toString(). Отримати рядкове представлення числа в заданій системі зчислення

Метод toString() повертає рядок, що представляє заданий об’єкт Number в заданій системі числення. Метод може використовуватись у двох формах

value.toString()
value.toString(radix)

тут

  • value – об’єкт Number, який конвертується в рядок;
  • radix – система числення з основою radix. Значення radix може бути від 2 до 36.

Характерні особливості функції:

  • якщо значення radix знаходиться за межами [2; 36], то генерується виключення RangeError;
  • дана функція (метод) toString() перевизначає однойменний метод об’єкту Object;
  • якщо radix≥10, то наступних цифр, які слідують за цифрою ‘9’, використовуються букви латинського алфавіту від ‘a’ до ‘z’;
  • якщо система зчислення не задана, то вважається, що бажаною є система зчислення з основою 10.

Приклад.

// Функція toString()

// 1. Використання функції без параметрів
var a = 2505
var res = a.toString() // res = 2505

// 2. Використання функції з аргументом radix()
a = 255
res = a.toString(16) // res = 'ff' - шістнадцяткова система зчислення

a = 10
res = a.toString(2) // res = "1010" - двійкова система зчислення

a = 100
res = a.toString(8) // res = '144' - вісімкова система зчислення

 

7. Функція Number.valueOf(). Отримати об’єкт на основі заданого значення

Метод Number.valueOf() повертає примітивне значення, обгорнуте в об’єкт Number. Використання функції може бути таким

value.valueOf()

тут value – примітивне значення, яке обгортається в об’єкт типу Number.

Приклад.

// Функція valueOf()

var res = Number(255).valueOf() // res = 255
res = "333".valueOf() // res = 333

var num = 25.88
res = num.valueOf() // res = 25.88

var str = "abcd"
res = str.valueOf() // res = "abcd"

var b = true
res = b.valueOf() // res = true

 


Споріднені теми