Ответ 1
Вы можете использовать функции parseInt
или parseFloat
или просто использовать унарный оператор +
:
var x = "32";
var y = +x; // y: number
Любое предложение о том, как преобразовать строку в число в 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
как указано здесь: fooobar.com/questions/27790/...
Для наших пользователей 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()
: эта функция принимает 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);
В Typescript есть встроенные функции, такие как parseInt()
, parseFloat()
и Number()
, которые вы можете использовать.
Вызовите функцию с помощью>> converttstring ('10.00 ')
parseFloat (string) => Может использоваться для преобразования в float, toFixed (4) => во сколько десятичных знаков
parseInt (str) => Может использоваться для преобразования в целое число
convertstring(string){
let number_parsed: any = parseFloat(string).toFixed(4)
return number_parsed
}
converttstring (string) {let number_parsed: any = parseFloat (string).toFixed(4) return number_parsed} введите описание ссылки здесь
У многих из вас есть проблемы с преобразованием типов данных, которые трудно решить в ситуациях ионного программирования, потому что этот язык является новым, здесь я подробно опишу инструкции для пользователя, чтобы узнать, как преобразовать ионные типы данных в строковые данные введите целое число
В таких языках программирования, как java, php, c, c++,... все могут легко перемещать данные, тогда как в ionic можно также создавать для нас преобразование данных, что также является простым способом, не в последнюю очередь в других языках программирования.
this.mPosition = parseInt("");
Есть три способа
let a = + '12';
let b = parseInt('12' , 10); // 10 means decimal number
let c = Number('12');
если вы говорите только о типах, как говорили другие, parseInt() и т.д. вернет правильный тип. Кроме того, если по какой-либо причине значением может быть как число, так и строка, и вы не хотите вызывать parseInt(), выражения typeof также приведут к правильному типу:
function f(value:number|string){
if(typeof value==='number'){
// value : number
}else {
// value : string
}
}
Вот модифицированная версия функции StrToNumber. Как и прежде,
Этот ответ является возможным решением, которое лучше подходит для первоначального вопроса, чем мой предыдущий пост.
static StrToNumber(val: string, defaultVal:number = 0): number
{
let result:number = defaultVal;
if(val == null)
return result;
if(val.length == 0)
return result;
val = val.trim();
if(val.length == 0)
return(result);
let sign:number = 1;
//
// . obtain sign from string, and place result in "sign" local variable. The Sign naturally defaults to positive
// 1 for positive, -1 for negative.
// . remove sign character from val.
// Note, before the function returns, the result is multiplied by the sign local variable to reflect the sign.
// . error check for multiple sign characters
// . error check to make sure sign character is at the head or tail of the string
//
{
let positiveSignIndex = val.indexOf('+');
let negativeSignIndex = val.indexOf('-');
let nTailIndex = val.length-1;
//
// make sure both negative and positive signs are not in the string
//
if( (positiveSignIndex != -1) && (negativeSignIndex != -1) )
return result;
//
// handle postive sign
//
if (positiveSignIndex != -1)
{
//
// make sure there is only one sign character
//
if( (positiveSignIndex != val.lastIndexOf('+')) )
return result;
//
// make sure the sign is at the head or tail
//
if( (positiveSignIndex > 0) && (positiveSignIndex < nTailIndex ) )
return result;
//
// remove sign from string
//
val = val.replace("+","").trim();
}
//
// handle negative sign
//
if (negativeSignIndex != -1)
{
//
// make sure there is only one sign character
//
if( (negativeSignIndex != val.lastIndexOf('-')) )
return result;
//
// make sure the sign is at the head or tail
//
if( (negativeSignIndex > 0) && (negativeSignIndex < nTailIndex ) )
return result;
//
// remove sign from string
//
val = val.replace("-","").trim();
sign = -1;
}
//
// make sure text length is greater than 0
//
if(val.length == 0)
return result;
}
//
// convert string to a number
//
var r = +(<any>val);
if( (r != null) && (!isNaN(r)) )
{
result = r*sign;
}
return(result);
}
var myNumber: number = 1200;
//convert to hexadecimal value
console.log(myNumber.toString(16)); //will return 4b0
//Other way of converting to hexadecimal
console.log(Math.abs(myNumber).toString(16)); //will return 4b0
//convert to decimal value
console.log(parseFloat(myNumber.toString()).toFixed(2)); //will return 1200.00
Вы всегда можете использовать опцию приведения. Сначала вы должны преобразовать ваш объект в "неизвестный" тип, а затем привести его к ожидаемому типу объекта.
let subID:number = 0;
subID = <number><unknown> await obj_s1aSite.submissionTableFirstID.getText();