pasar - typescript string length




TypeScript convertir una cadena a un número (6)

¿Alguien ha sugerido cómo convertir una cadena en un número en 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);

Actualización: hice un poco de rompecabezas extra, el mejor sofar que he encontrado: var aNumber: number = ("1") * 1;

Verificando si una cadena es numérica se responde aquí: En Typescript, Cómo verificar si una cadena es numérica .


Cadena a la conversión de números:

En Typescript convertimos una cadena a un número de las siguientes maneras:

  • ParseInt() : esta función toma 2 argumentos, el primero es una cadena para analizar. El segundo es el radix (la base en sistemas de numeración matemática, por ejemplo, 10 para decimal y 2 para binario). A continuación, devuelve el número entero, si el primer carácter no se puede convertir en un número, se devolverá NaN .
  • ParseFloat() : toma como argumento el valor que queremos analizar y devuelve un número de punto flotante. Si el valor no se puede convertir en un número, se devuelve NaN .
  • + operador: el operador, cuando se usa apropiadamente, puede forzar un valor de cadena en un número.

Ejemplos:

/*    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);

¿Cuál usar?

  1. Use ParseInt() cuando desee convertir una cadena en un entero . Sin embargo, el tipo de datos sigue siendo un valor flotante, ya que todos los valores numéricos son valores de punto flotante en TS . También use este método cuando necesite especificar el radio del número que desea analizar.
  2. Use ParseFloat() cuando necesite analizar una cadena en un número de punto flotante .
  3. Puede usar el operador + antes de una cadena para convertirlo en un número de punto flotante . La ventaja de esto es que la sintaxis es muy corta.

Como lo muestran otras respuestas aquí, hay varias formas de hacer la conversión:

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

Sin embargo, me gustaría mencionar una cosa más en parseInt .

Cuando se usa parseInt , tiene sentido pasar siempre el parámetro radix . Para la conversión decimal, eso es 10 . Este es el valor predeterminado para el parámetro, por lo que se puede omitir. Para binario, es un 2 y un 16 para hexadecimal. En realidad, cualquier radix entre e incluyendo 2 y 36 obras.

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

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

La función parseInt , bueno, analiza las cadenas para convertirlas en números. En algunas implementaciones de JS, parseInt analiza los ceros iniciales como octales:

Aunque ECMAScript 3 no lo recomienda y está prohibido por ECMAScript 5, muchas implementaciones interpretan una cadena numérica que comienza con un 0 inicial como octal. Lo siguiente puede tener un resultado octal, o puede tener un resultado decimal. Siempre especifique un radix para evitar este comportamiento poco fiable.

- MDN

El hecho de que el código se aclare es un efecto secundario agradable de especificar el parámetro radix.

Como parseFloat solo analiza expresiones numéricas en la raíz 10, aquí no hay necesidad de un parámetro de la raíz.

Más sobre esto:


Hay funciones incorporadas como parseInt() , parseFloat() y Number() en Typescript, puedes usarlas.


La forma mecanografiada de hacer esto sería:

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

como se responde aquí: https://.com/a/23440948/2083492


Puede usar las funciones parseInt o parseFloat , o simplemente usar el operador unario + :

var x = "32";
var y = +x; // y: number

Puedes seguir cualquiera de las siguientes formas.

var str = '54';

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




typescript