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

 


Связанные темы