Estaba teniendo algunos problemas con Leetcode, este en particular, y noté algunas rarezas en la forma en que JavaScript maneja números más grandes:
> x = 1000000000000000000000000000001; 1e+30 // Scientific notation? interesting > x.toString() '1e+30' // Reason for the parsing issues with my Leetcode implementation.. > x.toLocaleString('en', { useGrouping: false }); '1000000000000000000000000000000' // The last '1' was changed to a '0', probably cause x is stored as 1e+30. > BigInt(x).toString(); '1000000000000000019884624838656' // ? > y = 2384762348723648237462348; 2.3847623487236483e+24 // This big number is stored as a floating point?Probé la conversión de cadenas de x en Python, y funcionó bien, así que supongo que este comportamiento es exclusivo de JavaScript. No estoy muy familiarizado con la forma en que JavaScript hace las cosas bajo el capó, por lo que esperaba poder obtener una explicación de lo que sucede aquí con los números de JavaScript y BigInt. ¿Y cómo se almacenaría x y se convertiría en una cadena?
¡Gracias!