¿Exactitud de la multiplicación de doble precisión en java?
floating-point multiplication (3)
¿Cuál es la precisión garantizada del operador de multiplicación para valores dobles en java?
Por ejemplo, 2.2 * 100 es 220.00000000000003, pero 220 es un número doble. 220.00000000000003 es el siguiente doble después de 220.
Si está trabajando con datos financieros, no use float or double
simplemente use java.math.BigDecimal
La multiplicación funciona bien, pero 2.2
no se puede representar exactamente como un doble. Los dobles más cercanos son:
- 2.199999999999999733 (0x4001999999999999)
- 2.200000000000000177 (0x400199999999999a)
Algún software imprimirá el último valor como 2.2
, pero eso no significa que sea exacto. Simplemente significa que se trata como "lo suficientemente cerca".