···11-http://comaflotante.org pretende dar respuestas cortas y sencillas
11+http://puntoflotante.org pretende dar respuestas cortas y sencillas
22a las preguntas recurrentes de programadores principiantes sobre
33-números de coma flotante que «no se suman correctamente», e información
33+números de punto flotante que «no se suman correctamente», e información
44más detallada sobre cómo funcionan los números decimales del IEEE 754,
55cuándo y cómo usarlos correctamente, y qué usar en su lugar cuando
66no son apropiados.
+6-6
content/basic.html
···11---
22title: Respuestas Básicas
33-description: Respuestas concisas a preguntas básicas sobre aritmética de coma flotante, como «¿Por qué mis números no se suman bien?»
33+description: Respuestas concisas a preguntas básicas sobre aritmética de punto flotante, como «¿por qué mis números no se suman bien?»
44---
5566-### ¿Por qué al sumar mis números, como 0.1 + 0.2, en vez de dar 0.3 dan un resultado extraño como 0.30000000000000004?
66+### ¿Por qué al sumar mis números, como 0.1 + 0.2, en vez de dar 0.3 da un resultado extraño como 0.30000000000000004?
7788-Porque internamente, los ordenadores usan un formato ([coma flotante](/formats/fp) [binario](/formats/binary))
88+Porque internamente, los ordenadores usan un formato ([punto flotante](/formats/fp) [binario](/formats/binary))
99que no puede representar de forma precisa números como 0.1, 0.2 o 0.3 *de ninguna manera*.
10101111Cuando el código es compilado o interpretado, tu "0.1" se redondea
···3535### ¿Por qué otros cálculos como 0.1 + 0.4 sí funcionan bien?
36363737En este caso, el resultado (0.5) *sí* puede ser representado de manera exacta como un
3838-número de coma flotante, y es posible que los errores de redondeo de los datos de partida
3838+número de punto flotante, y es posible que los errores de redondeo de los datos de partida
3939se cancelen entre sí - aunque no se debería confiar excesivamente en esto (e.g. cuando
4040-esos dos números fueron almacenados en representaciones de coma flotante de diferente
4040+esos dos números fueron almacenados en representaciones de punto flotante de diferente
4141tamaño, los errores de redondeo pueden no cancelarse entre ellos).
42424343En otros casos como 0.1 + 0.3, el resultado no es _realmente_ 0.4, pero está lo suficientemente
4444cerca como para que 0.4 sea el número más corto que está más cerca del resultado que cualquier
4545-otro número de coma flotante. La mayoría de lenguajes presentan ese número en vez de convertir
4545+otro 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.
47474848Si quieres más información, puedes acudir a las [referencias](/references/).
+17-11
content/formats/fp.html
···11---
22-title: Floating Point Numbers
33-description: Explanation of how floating-points numbers work and what they are good for
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
44---
5566-Why floating-point numbers are needed
77--------------------------------------
66+Por qué son necesarios los números de coma flotante
77+---------------------------------------------------
8899-Since computer memory is limited, you cannot store numbers with infinite precision, no matter whether you use [binary fractions](/formats/binary/) or decimal ones: at some point you have to cut off. But how much accuracy is needed? And *where* is it needed? How many integer digits and how many fraction digits?
99+Como la memoria de los ordenadores es limitada, no puedes almacenar números
1010+con precisión infinita, no importa si usas [fracciones binarias](/formats/binary/) o
1111+decimales: en algún punto tienes que cortar. Pero ¿cuánta precisión se necesita?
1212+¿Y *dónde* se necesita? ¿Cuántos dígitos enteros y cuántos fraccionarios?
10131111-* To an engineer building a highway, it does not matter whether it's 10 meters or 10.0001 meters wide - his measurements are probably not that accurate in the first place.
1212-* To someone designing a microchip, 0.0001 meters (a tenth of a millimeter) is a *huge* difference - But he'll never have to deal with a distance larger than 0.1 meters.
1313-* A physicist needs to use the [speed of light](http://en.wikipedia.org/wiki/Speed_of_light) (about 300000000) and [Newton's gravitational constant](http://en.wikipedia.org/wiki/Gravitational_constant) (about 0.0000000000667) together in the same calculation.
1414-1515-To satisfy the engineer and the chip designer, a number format has to provide accuracy for numbers at very different magnitudes. However, only *relative* accuracy is needed. To satisfy the physicist, it must be possible to do calculations that involve numbers with different magnitudes.
1414+* Para un ingeniero construyendo una autopista, no importa si tiene 10 metros o 10.0001 metros de ancho - posiblemente ni siquiera sus mediciones eran así de precisas.
1515+* Para alguien diseñando un microchip, 0.0001 metros (la décima parte de un milímetro) es una diferencia *enorme* - pero nunca tendrá que manejar distancias mayores de 0.1 metros.
1616+* Un físico necesita usar la [velocidad de la luz](http://es.wikipedia.org/wiki/Velocidad_de_la_luz) (más o menos 300000000) y la [constante de gravitación universal](http://es.wikipedia.org/wiki/Constante_de_gravitaci%C3%B3n_universal) (más o menos 0.0000000000667) juntas en el mismo cálculo.
16171717-Basically, having a fixed number of integer and fractional digits is not useful - and the solution is a format with a *floating point*.
1818+Para satisfacer al ingeniero y al diseñador de circuitos integrados, el formato
1919+tiene que ser preciso para números de órdenes de magnitud muy diferentes. Sin
2020+embargo, solo se necesita precisión *relativa*. Para satisfacer al físico, debe
2121+ser posible hacer cálculos que involucren números de órdenes muy dispares.
2222+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 *coma flotante*.
18241925How floating-point numbers work
2026-------------------------------
+19-7
content/index.html
···11---
22-title: Lo Que Todo Programador Debería Saber Sobre Aritmética de Coma Flotante
33-description: Pretende dar respuestas cortas y sencillas a las preguntas recurrentes de programadores principiantes sobre números de coma 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.
22+title: Lo Que Todo Programador Debería Saber Sobre Aritmética de Punto Flotante
33+description: 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---
66···1010¿Por qué mis números no se suman bien?
1111======================================
12121313-O sea que has escrito algún código absurdamente simple, como por ejemplo<sup>1</sup>:
1313+O sea que has escrito algún código absurdamente simple, como por ejemplo:
14141515 0.1 + 0.2
1616···24242525* Explicar de manera concisa por qué obtuviste ese resultado inesperado
2626* Decirte cómo lidiar con este problema
2727-* Si te interesa, dar explicaciones detalladas de por qué los números de coma flotante tienen que funcionar así y qué otros problemas pueden surgir
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
28282929Deberías ir a la sección de [Respuestas Básicas](/basic/) primero - ¡pero no termines ahí!
30303131-<sup>1</sup> <small>Las Academias de la Lengua [recomiendan el punto como separador para las cifras
3232-decimales](http://www.tex-tipografia.com/marca_decimal.html), convergiendo así con
3333-la notación anglosajona que es la que se utiliza en la mayoría de lenguajes de programación.</small>
3131+### Sobre la notación y la nomenclatura
3232+3333+Aunque tanto la punto como el punto como marcas decimales son válidas según el
3434+Sistema Internacional y la norma ISO<sup>1</sup>, las Academias de la Lengua recomiendan el
3535+punto como separador para las cifras decimales<sup>2</sup>. Esto facilita las cosas,
3636+porque se converge así con la notación anglosajona que es la que se utiliza en la mayoría de
3737+lenguajes de programación. En este sitio se ha optado por la denominación «punto
3838+flotante» en lugar de «coma flotante», puesto que la Fundación del Español Urgente
3939+(<a href="http://www.fundeu.es/">Fundéu BBVA</a>) especificó en una consulta
4040+que debe haber correspondencia con el criterio adoptado para la marca decimal.
4141+4242+<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>
+1-1
content/references.html
···11---
22title: Referencias
33-description: Documentos con más información detallada sobre aritmética de coma flotante
33+description: Documentos con más información detallada sobre aritmética de punto flotante
44---
5566Documentos que contienen más información detallada sobre los temas tratados en este sitio:
+8-1
content/style.css
···7575}
76767777#main li {
7878- list-style-type: square;
79788079 font-size: 15px;
81808281 line-height: 20px;
8282+}
8383+8484+#main ul li {
8585+ list-style-type: square;
8686+}
8787+8888+#main ol li {
8989+ list-style-type: decimal;
8390}
84918592#sidebar {
+1-1
content/xkcd.html
···11---
22title: xkcd
33-description: Cómo fastidiar a la gente que ha aprendido a *esperar* errores de redondeo en aritmética de coma flotante.
33+description: Cómo fastidiar a la gente que ha aprendido a *esperar* errores de redondeo en aritmética de punto flotante
44---
5566o