Любое предложение о том, как преобразовать строку в число в 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, как проверить, является ли строка числовой.
Вы можете использовать функции parseInt
или parseFloat
или просто использовать унарный оператор +
:
var x = "32";
var y = +x; // y: number
Typescript способ сделать это:
Number('1234') // 1234
Number('9BX9') // NaN
как указано здесь: https://stackoverflow.com/questions/23437476/in-typescript-how-to-check-if-a-string-is-numeric
isNaN
функции isNaN
.
Для наших пользователей Angular:
В шаблоне, Number(x)
и parseInt(x)
выдается ошибка, а +x
не действует. Действительное кастинг будет x*1
или x/1
.
Излагая то, что сказал Райан, 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.
Как показано в других ответах, существует несколько способов сделать преобразование:
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.
Подробнее об этом:
Вы можете выполнить один из следующих способов.
var str = '54';
var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation
В Typescript есть встроенные функции, такие как parseInt()
, parseFloat()
и Number()
, которые вы можете использовать.
Вызовите функцию с помощью => converttstring ('10.00 ')
parseFloat (string) => Может использоваться для преобразования в число с плавающей точкой. toFixed (4) => сколько десятичных знаков
parseInt (str) => Может использоваться для преобразования в целое число
convertstring(string){
let number_parsed: any = parseFloat(string).toFixed(4)
return number_parsed
}
В 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);
ParseInt()
когда вы хотите преобразовать строку в целое число. Однако тип данных все еще является плавающим, поскольку все числовые значения являются значениями с плавающей запятой в TS. Также используйте этот метод, когда вам нужно указать основание числа, которое вы хотите проанализировать.ParseFloat()
когда вам нужно проанализировать строку в число с плавающей запятой.+
перед строкой, чтобы привести ее к числу с плавающей запятой. Преимущество этого в том, что синтаксис очень короткий.
var aNumber = <number><any>"1";