Tengo un escenario en el que necesito convertir una cadena de 19 dígitos en un número. por ejemplo, parseFloat ("1000000000100000043") me da 1000000000100000000 pero el resultado esperado requerido es 1000000000100000043
Es probable que se trate de un error de desbordamiento de precisión.
El tipo de datos Number (pero también int y float en otros idiomas) tiene un número finito de bits disponibles para representar un número. Por lo general, alrededor de 15-16 dígitos decimales.
Cuando la longitud del número original en la cadena excede la precisión disponible, dicho número ya no puede ser representado por el tipo de datos de destino.
En este caso, la función parseFloat falla silenciosamente. Si desea detectar esta situación, debe agregar código para verificar los datos entrantes o usar otra función, posiblemente una personalizada. Como alternativa, puede volver a convertir el valor numérico en una cadena y compararlo con el original para detectar una discrepancia.
Ver también una pregunta sobre double.Parse
Te estás encontrando con cómo se almacenan los números de Javascript. Ver, por ejemplo, aquí: https://www.w3schools.com/js/js_numbers.asp
Puede usar una biblioteca como decimal.js para trabajar con números grandes y exactos. Estas bibliotecas almacenan el número como una cadena, pero le permiten realizar operaciones matemáticas.