Recientemente, cumplí con un requisito. Necesito crear una entrada para recibir la cantidad del usuario correctamente.
Al principio, quiero ingresar el número porque el backend usó bigint como tipo de almacenamiento. Es bastante problemático convertir entre Cadena y Número. Lo que es más problemático es que necesito convertir los números en unidades. Pero sé que el número de JS se basa en el punto flotante binario básico de 64 bits IEEE754. Entonces debe haber un problema de pérdida de precisión aquí. Porque tenía la impresión de que, siempre que se expresara en números de punto flotante, debe haber números que no se puedan expresar con precisión.
Recordé el ejemplo que vi antes. Probé en la consola de mi Chrome.
console.log(0.2 + 0.1) // 0.30000000000000004Esto significa que el número 0,3 no se puede representar con precisión. Entonces procedí con el siguiente intento.
const num = 0.3; console.log(num); // 0.3Me sorprendió descubrir que la impresión era realmente precisa. Pero luego me calmé de inmediato y decidí que este número estaba almacenado incorrectamente en la memoria. Incluso a través de él se puede almacenar con precisión, ¿qué pasa con json pasado?
Así que esta es mi primera pregunta. ¿Estoy en lo correcto en esta opinión? ¿Y cómo explicar la impresión precisa de 0,3?
Al final, utilicé una cadena como entrada y expresiones regulares para validar que la cadena es una cantidad válida de dinero. Luego pase la cadena al backend y deje que el servidor analice y almacene.
Así que esta es mi segunda pregunta. ¿Es correcto el método? ¿O puede haber alguna otra manera mejor? Por favor guíame.