Comparativas Desarrollo

Float vs Double vs Decimal

Los tipos numéricos de precisión simple, doble y decimal comparados: bits, dígitos de precisión, rango, el problema de 0,1 + 0,2 y cuándo usar cada uno, con valores tomados de NumPy y Python.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

Los tres guardan números con una cantidad fija de dígitos, pero float y double son binarios (IEEE 754) mientras que los tipos decimales trabajan en base 10. Inspeccione cualquier valor con Conversor de Flotantes IEEE 754; la teoría está en Cómo funcionan los números de coma flotante y Número de coma flotante.

Los tipos lado a lado

float (binary32) double (binary64) decimal (p. ej., decimal128)
Bits totales 32 64 128
Disposición 1 de signo, 8 de exponente, 23 de fracción 1 de signo, 11 de exponente, 52 de fracción Signo, exponente, hasta 34 dígitos decimales
Precisión Unos 7 dígitos decimales Unos 15-16 dígitos decimales 34 dígitos decimales
Mayor valor finito 3,4028235 × 10^38 1,7976931348623157 × 10^308 9,999… × 10^6144
Épsilon de máquina 1,19 × 10^-7 2,22 × 10^-16 10^-33
Enteros exactos hasta 16 777 216 (2^24) 9 007 199 254 740 992 (2^53) Todos los de hasta 34 dígitos
Representa 0,1 con exactitud No No Sí

La sorpresa clásica

  • En doble precisión 0.1 + 0.2 es 0.30000000000000004, y el float más cercano a 0,1 es 0.10000000149011612.
  • Por encima de 2^24, un float no distingue enteros vecinos: 16777216 + 1 sigue siendo 16777216.
  • En aritmética decimal 0.1 + 0.2 es exactamente 0.3 (decimal de Python).
  • Compare los flotantes con una tolerancia, nunca con ==.

Cuál usar

  • Gráficos, audio, aprendizaje automático y juegos: float, donde importan más la memoria y la velocidad que el último dígito.
  • Ciencia, estadística y código numérico general: double.
  • Dinero, facturas, impuestos y todo lo que la gente comprueba a mano: decimal (o céntimos enteros).
  • Identificadores y contadores grandes: enteros, nunca coma flotante.

Pruebe estas herramientas

Véase también

  • Guía Cómo funcionan los números de coma flotante
    Cómo guardan los ordenadores los decimales como signo, exponente y fracción (IEEE 754), por qué 0,1 no es exacto, qué son el redondeo.
  • Glosario Número de coma flotante
    Un número de coma flotante guarda un número real como signo, exponente y fracción, como la notación científica en binario.
  • Glosario Notación científica
    La notación científica escribe un número como un coeficiente entre 1 y 10 por una potencia de diez.
  • Glosario Cifras significativas
    Las cifras significativas son los dígitos de un número que aportan información sobre su precisión.
  • Hoja de referencia Tabla de binario, octal y hex
    Del 0 al 31 en decimal, binario, octal y hex, las potencias de dos, atajos de conversión a mano y el alfabeto Base32.

Preguntas frecuentes

Ni 0,1 ni 0,2 pueden guardarse exactamente en binario, igual que 1/3 no puede escribirse exactamente en decimal. Sus valores almacenados suman 0,30000000000000004 en doble precisión. Un tipo decimal los guarda con exactitud y da 0,3.

Use un tipo decimal, o enteros que cuenten la unidad más pequeña, como los céntimos. La coma flotante binaria no puede representar con exactitud la mayoría de las cantidades en céntimos.

AdSense Placeholder
Slot: footer_leaderboard