Nunca use números de coma flotante para cálculos financieros. Como ha observado, esto lleva a problemas de redondeo porque la mayoría de las fracciones decimales como [math] 0.1_ {10} = 0.00011001100110011 \ dots_2 [/ math] no tienen una representación finita exacta en binario.
En cambio, solo represente todos los valores monetarios utilizando un número entero de las unidades relevantes más pequeñas de la moneda , por ejemplo, centavos. No necesita una biblioteca especial para esto. Se garantiza que los números JavaScript simples puedan representar exactamente cada número entero entre [matemática] -2 ^ {53} [/ matemática] y [matemática] 2 ^ {53} [/ matemática] y [matemática] 2 ^ {53} [/ matemáticas] centavos es de unos nueve quintillones de dólares.
(No vuelva a dividir entre 100 y convierta a dólares, como en el ejemplo que dio. Simplemente deje todo en centavos).
- ¿Hay algo que una máquina de Turing pueda calcular dado un tiempo infinito que no podría calcular en una cantidad de tiempo arbitrariamente grande?
- ¿Cómo funcionan la Ley Idempotente y la Ley de Dominación?
- ¿Las funciones del tipo x ^ 2, x ^ 3, x ^ n se consideran de naturaleza recursiva?
- ¿Podrá la inteligencia artificial resolver un problema matemático abierto, como la conjetura de Goldbach o la hipótesis de Riemann?
- ¿Cuál es la diferencia entre Basic Auth, Digest Auth, oAuth1.0 y oAuth2.0? ¿Cuál es un ejemplo de cada uno en el núcleo de PHP?