TypeScript Преобразование строки в число

469

Любое предложение о том, как преобразовать строку в число в TypeScript?

var aNumber : number = "1"; // --> Error

// Could this be done?
var defaultValue = 0;
var aNumber : number = "1".toInt32(defaultValue);

// Or ..
var defaultValue = 0;
var aNumber : number = StringToInt("1", defaultValue);

Обновление: Я сделал несколько дополнительных озадачиваний, лучший софт, который я придумал:   var aNumber: number = ( "1" ) * 1;

проверка, если строка является числовой, здесь: В Typescript, как проверить, является ли строка числовой.

Теги:

9 ответов

605
Лучший ответ

Вы можете использовать функции parseInt или parseFloat или просто использовать унарный оператор +:

var x = "32";
var y = +x; // y: number
  • 79
    маленький совет: parseInt (null) возвращает NaN, но + null возвращает 0
  • 4
    Не такой выразительный, как более высокий ответ Филиппа здесь, который делает это способом TypeScript.
Показать ещё 2 комментария
725

Typescript способ сделать это:

Number('1234') // 1234
Number('9BX9') // NaN

как указано здесь: https://stackoverflow.com/questions/23437476/in-typescript-how-to-check-if-a-string-is-numeric

  • 4
    Примечание: вы можете проверить NaN с isNaN функции isNaN .
  • 2
    Обратите внимание, что это не сработает: let value: number = valueAsString;
Показать ещё 5 комментариев
64

Для наших пользователей Angular:

В шаблоне, Number(x) и parseInt(x) выдается ошибка, а +x не действует. Действительное кастинг будет x*1 или x/1.

  • 0
    спасибо .. только у меня это сработало
  • 0
    работает как шарм.
Показать ещё 4 комментария
38

Излагая то, что сказал Райан, TypeScript охватывает идиомы JavaScript вообще.

var n = +"1"; // the unary + converts to number
var b = !!"2"; // the !! converts truthy to true, and falsy to false
var s = ""+3; // the ""+ converts to string via toString()

Все интересные подробные сведения в Преобразование типа JavaScript.

23

Как показано в других ответах, существует несколько способов сделать преобразование:

Number('123');
+'123';
parseInt('123');
parseFloat('123.45')

Я хотел бы упомянуть еще об этом на parseInt.

При использовании parseInt имеет смысл всегда передавать параметр radix. Для десятичного преобразования, то есть 10. Это значение по умолчанию для параметра, поэтому его можно опустить. Для двоичных файлов это a 2 и 16 для шестнадцатеричного. Фактически, любое основание между и в том числе 2 и 36 работает.

parseInt('123')         // 123 (don't do this)
parseInt('123', 10)     // 123 (much better)

parseInt('1101', 2)     // 13
parseInt('0xfae3', 16)  // 64227

Функция parseInt, ну, анализирует строки, чтобы преобразовать их в числа. В некоторых реализациях JS parseInt анализирует начальные нули как восьмеричные:

Несмотря на то, что ECMAScript 3 не рекомендуется ECMAScript 3 и запрещен ECMAScript 5, многие реализации интерпретируют числовую строку, начинающуюся с ведущего 0 как восьмеричного. Следующий может иметь восьмеричный результат, или он может иметь десятичный результат. Всегда указывайте основание, чтобы избежать этого ненадежного поведения.

- MDN

Тот факт, что код становится яснее, является хорошим побочным эффектом указания параметра radix.

Так как parseFloat анализирует только числовые выражения в radix 10, здесь нет необходимости использовать параметр radix.

Подробнее об этом:

15

Вы можете выполнить один из следующих способов.

var str = '54';

var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation 
2

В Typescript есть встроенные функции, такие как parseInt(), parseFloat() и Number(), которые вы можете использовать.

0

Вызовите функцию с помощью => converttstring ('10.00 ')

parseFloat (string) => Может использоваться для преобразования в число с плавающей точкой. toFixed (4) => сколько десятичных знаков

parseInt (str) => Может использоваться для преобразования в целое число

convertstring(string){
    let number_parsed: any = parseFloat(string).toFixed(4)
    return number_parsed
}
0

Преобразование строки в число:

В Typescript мы конвертируем строку в число следующими способами:

  • ParseInt(): эта функция принимает 2 аргумента, первый - строка для анализа. Второй - основание (основание в математических системах счисления, например, 10 для десятичной и 2 для двоичной). Затем он возвращает целое число, если первый символ не может быть преобразован в число, будет возвращен NaN.
  • ParseFloat(): принимает в качестве аргумента значение, которое мы хотим проанализировать, и возвращает число с плавающей запятой. Если значение не может быть преобразовано в число, возвращается NaN.
  • Оператор +: при правильном использовании оператор может преобразовать строковое значение в число.

Примеры:

/*    parseInt   */

// note that a whole number is returned, so it will round the number
console.log(parseInt('51.023124'));

// parseInt will 'cut off' any part of the string which is not a number
console.log(parseInt('5adfe1234'));

// When the string starts with non number NaN is returned
console.log(parseInt('z123'));

console.log('--------');

/*    parseFloat   */

// parses the string into a number and keeping the precision of the number
console.log(typeof parseFloat('1.12321423'));

// parseFloat will 'cut off' any part of the string which is not a number
console.log(parseFloat('5.5abc'));

console.log('--------');

/*   + operator   */

let myString = '12345'

console.log(typeof +myString);

let myOtherString = '10ab'

// + operator will not cut off any 'non number' string part and will return NaN
console.log(+myOtherString);

Какой использовать?

  1. Используйте ParseInt() когда вы хотите преобразовать строку в целое число. Однако тип данных все еще является плавающим, поскольку все числовые значения являются значениями с плавающей запятой в TS. Также используйте этот метод, когда вам нужно указать основание числа, которое вы хотите проанализировать.
  2. Используйте ParseFloat() когда вам нужно проанализировать строку в число с плавающей запятой.
  3. Вы можете использовать оператор + перед строкой, чтобы привести ее к числу с плавающей запятой. Преимущество этого в том, что синтаксис очень короткий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню