···11---
22-title: Respuestas Básicas
22+title: Respuestas básicas
33description: Respuestas concisas a preguntas básicas sobre aritmética de punto flotante, como «¿por qué mis números no se suman bien?»
44---
55···4545otro número de punto flotante. La mayoría de lenguajes presentan ese número en vez de convertir
4646el resultado real a una fracción decimal.
47474848-Si quieres más información, puedes acudir a las [referencias](/references/).
4848+Si quieres más información, puedes acudir a las [Referencias](/references/).
+38-34
content/formats/fp.html
···11---
22-title: Números de Coma Flotante
33-description: Explicación de cómo funcionan los números de coma flotante y para qué son útiles
22+title: Números de Punto Flotante
33+description: Explicación de cómo funcionan los números de punto flotante y para qué son útiles
44---
5566-Por qué son necesarios los números de coma flotante
66+Por qué son necesarios los números de punto flotante
77---------------------------------------------------
8899Como la memoria de los ordenadores es limitada, no puedes almacenar números
···2020embargo, solo se necesita precisión *relativa*. Para satisfacer al físico, debe
2121ser posible hacer cálculos que involucren números de órdenes muy dispares.
22222323-Básicamente, tener un número fijo de dígitos enteros y fraccionarios no es útil - y la solución es un formato con una *coma flotante*.
2323+Básicamente, tener un número fijo de dígitos enteros y fraccionarios no es útil - y la solución es un formato con una *punto flotante*.
24242525-How floating-point numbers work
2626--------------------------------
2727-The idea is to compose a number of two main parts:
2525+Cómo funcionan los números de punto flotante
2626+--------------------------------------------
28272929-* A **significand** that contains the number's digits. Negative significands represent negative numbers.
3030-* An **exponent** that says where the decimal (or binary) point is placed relative to the beginning of the significand. Negative exponents represent numbers that are very small (i.e. close to zero).
2828+La idea es descomponer el número en dos partes:
31293232-Such a format satisfies all the requirements:
3030+* Una **mantisa** (también llamada coeficiente o significando) que contiene los dígitos del número. Mantisas negativas representan números negativos.
3131+* Un **exponente** que indica dónde se coloca el punto decimal (o binario) en relación al inicio de la mantisa. Exponentes negativos representan números menores que uno.
33323434-* It can represent numbers at wildly different magnitudes (limited by the length of the exponent)
3535-* It provides the same relative accuracy at all magnitudes (limited by the length of the significand)
3636-* It allows calculations across magnitudes: multiplying a very large and a very small number preserves the accuracy of both in the result.
3333+Este formato cumple todos los requisitos:
37343838-Decimal floating-point numbers usually take the form of [scientific notation](http://en.wikipedia.org/wiki/Scientific_notation) with an
3939-explicit point always between the 1st and 2nd digits. The exponent is
4040-either written explicitly including the base, or an **e** is used to
4141-separate it from the significand.
3535+* Puede representar números de órdenes de magnitud enormemente dispares (limitado por la longitud del exponente).
3636+* Proporciona la misma precisión relativa para todos los órdenes (limitado por la longitud de la mantisa).
3737+* Permite cálculos entre magnitudes: multiplicar un número muy grande y uno muy pequeño conserva la precisión de ambos en el resultado.
42384343-| Significand | Exponent | Scientific notation | Fixed-point value |
4444-|-------------|----------|---------------------|-------------------|
3939+Los números de coma flotante decimales normalmente se expresan en
4040+[notación científica](http://es.wikipedia.org/wiki/Notaci%C3%B3n_cient%C3%ADfica) con un
4141+punto explícito siempre entre el primer y el segundo dígitos. El exponente o bien
4242+se escribe explícitamente incluyendo la base, o se usa una **e** para
4343+separarlo de la mantisa.
4444+4545+| Mantisa | Exponente | Notación científica | Valor en punto fijo |
4646+|---------|-----------|---------------------|---------------------|
4547| 1.5 | 4 | 1.5 ⋅ 10<sup>4</sup> | 15000 |
4648| -2.001 | 2 | -2.001 ⋅ 10<sup>2</sup> | -200.1 |
4747-| 5 | -3 | 5 ⋅ 10<sup>-3</sup> | 0,005 |
4949+| 5 | -3 | 5 ⋅ 10<sup>-3</sup> | 0.005 |
4850| 6.667 | -11 | 6.667e-11 | 0.0000000000667 |
49515050-The standard
5151-------------
5252-Nearly all hardware and programming languages use floating-point numbers in the same binary formats, which are defined in the [IEEE 754](http://en.wikipedia.org/wiki/IEEE_754-2008) standard. The usual formats are 32 or 64 bits in total length:
5252+El estándar
5353+-----------
53545454-| Format | Total bits | Significand bits | Exponent bits | Smallest number | Largest number |
5555-|--------|------------|------------------|---------------|-----------------|----------------|
5656-| Single precision | 32 | 23 + 1 sign | 8 | ca. 1.2 ⋅ 10<sup>-38</sup> | ca. 3.4 ⋅ 10<sup>38</sup>|
5757-| Double precision | 64 | 52 + 1 sign | 11 | ca. 5.0 ⋅ 10<sup>-324</sup> | ca. 1.8 ⋅ 10<sup>308</sup> |
5555+Casi todo el hardware y lenguajes de programación utilizan números de punto flotante en los mismos
5656+formatos binarios, que están definidos en el estándar [IEEE 754](http://es.wikipedia.org/wiki/IEEE_coma_flotante).
5757+Los formatos más comunes son de 32 o 64 bits de longitud total:
58585959-Note that there are some peculiarities:
5959+| Formato | Bits totales | Bits significativos | Bits del exponente | Número más pequeño | Número más grande |
6060+|---------|--------------|---------------------|--------------------|--------------------|-------------------|
6161+| Precisión sencilla | 32 | 23 + 1 signo | 8 | ~1.2 ⋅ 10<sup>-38</sup> | ~3.4 ⋅ 10<sup>38</sup>|
6262+| Precisión doble | 64 | 52 + 1 signo | 11 | ~5.0 ⋅ 10<sup>-324</sup> | ~1.8 ⋅ 10<sup>308</sup> |
60636161-* The **actual bit sequence** is the sign bit first, followed by the exponent and finally the significand bits.
6262-* The exponent does not have a sign; instead an **exponent bias** is subtracted from it (127 for single and 1023 for double precision). This, and the bit sequence, allows floating-point numbers to be compared and sorted correctly even when interpreting them as integers.
6363-* The significand's most significant bit is assumed to be 1 and omitted, except for special cases.
6464-* There are separate **positive and a negative zero** values, differing in the sign bit, where all other bits are 0. These must be considered equal even though their bit patterns are different.
6565-* There are special **positive and negative infinity** values, where the exponent is all 1-bits and the significand is all 0-bits. These are the results of calculations where the positive range of the exponent is exceeded, or division of a regular number by zero.
6666-* There are special **not a number** (or NaN) values where the exponent is all 1-bits and the significand is *not* all 0-bits. These represent the result of various undefined calculations (like multiplying 0 and infinity, any calculation involving a NaN value, or application-specific cases). Even bit-identical NaN values must *not* be considered equal.6464+Hay algunas pecularidades:
6565+6666+* La *secuencia de bits* es primero el bit del signo, seguido del exponente y finalmente los bits significativos.
6767+* El exponente no tiene signo; en su lugar se le resta un **desplazamiento** (127 para sencilla y 1023 para doble precisión). Esto, junto con la secuencia de bits, permite que los números de punto flotante se puedan comparar y ordenar correctamente incluso cuando se interpretan como enteros.
6868+* Se asume que el bit más significativo de la mantisa es 1 y se omite, excepto para casos especiales.
6969+* Hay valores diferentes para **cero positivo y cero negativo**. Estos difieren en el bit del signo, mientras que todos los demás son 0. Deben ser considerados iguales aunque sus secuencias de bits sean diferentes.
7070+* Hay valores especiales **no numéricos** (NaN, «not a number» en inglés) en los que el exponente es todo unos y la mantisa *no* es todo ceros. Estos valores representan el resultado de algunas operaciones indefinidas (como multiplicar 0 por infinito, operaciones que involucren NaN, o casos específicos). Incluso valores NaN con idéntica secuencia de bits *no* deben ser considerados iguales.
+4-6
content/index.html
···11---
22-title: Lo Que Todo Programador Debería Saber Sobre Aritmética de Punto Flotante
22+title: Lo que todo programador debería saber sobre aritmética de punto flotante
33description: Pretende dar respuestas cortas y sencillas a las preguntas recurrentes de programadores principiantes sobre números de punto flotante que «no se suman correctamente», e información más detallada sobre cómo funcionan los números decimales del IEEE 754, cuándo y cómo usarlos correctamente, y qué usar en su lugar cuando no son apropiados
44verification: True
55---
···2626* Decirte cómo lidiar con este problema
2727* Si te interesa, dar explicaciones detalladas de por qué los números de punto flotante tienen que funcionar así y qué otros problemas pueden surgir
28282929-Deberías ir a la sección de [Respuestas Básicas](/basic/) primero - ¡pero no termines ahí!
2929+Deberías ir a la sección de [Respuestas básicas](/basic/) primero - ¡pero no termines ahí!
30303131### Sobre la notación y la nomenclatura
3232···3939(<a href="http://www.fundeu.es/">Fundéu BBVA</a>) especificó en una consulta
4040que debe haber correspondencia con el criterio adoptado para la marca decimal.
41414242-<ol>
4343- <li>http://www.tex-tipografia.com/marca_decimal.html</li>
4444- <li>http://www.tex-tipografia.com/ortografia_notaciones.html</li>
4545-</ol>
4242+1. *La marca decimal* <<a href="http://www.tex-tipografia.com/marca_decimal.html">http://www.tex-tipografia.com/marca_decimal.html</a>>
4343+2. *Las notaciones científicas en la Ortografía académica* <<a href="http://www.tex-tipografia.com/ortografia_notaciones.html">http://www.tex-tipografia.com/ortografia_notaciones.html</a>>