Укажите номер с десятичной запятой в .toLocaleString() в TypeScript

#string #typescript #casting #locale

#строка #typescript #Кастинг #язык

Вопрос:

Я пытаюсь сформировать число, имеющее десятичный разделитель, из строки, чтобы иметь возможность применять метод .toLocaleString() , который нельзя применять к строкам.

 const initialString = 122; //number
const decimalStr = initialString.toFixed(initialString); //string
const formattedStr = decimalStr.toLocaleString('de-DE');//error,decimalStr is a string
  

Если к decimalStr должно быть применено какое-либо преобразование, десятичные цифры будут потеряны (т.е. decimalStr = decimalStr или decimalStr = Number(decimalStr) . => проблема, необходимо сохранить десятичные цифры.

Как я могу сохранить десятичные точки и заставить .toLocaleString () видеть вызывающее значение как число?

Ответ №1:

Number.toLocaleString Метод принимает второй вызванный аргумент options . Вы можете использовать этот аргумент для управления количеством разрядов дроби. Следовательно, ваш вызов будет:

 const initialNumber = 122; 
const formattedStr = initialNumber.toLocaleString('de-DE', {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
});
  

Более подробную информацию смотрите здесь.

Также обратите внимание, что оба toFixed и maximumFractionDigits имеют ограничения: 100 и 20 соответственно. Итак, приведенный вами пример завершается ошибкой во второй строке.