Lo que todo programador debería saber sobre aritmética de punto flotante
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Cambiada nomenclatura a «punto flotante»

+61 -35
+1
CNAME
··· 1 + puntoflotante.org
+2 -2
README.txt
··· 1 - http://comaflotante.org pretende dar respuestas cortas y sencillas 1 + http://puntoflotante.org pretende dar respuestas cortas y sencillas 2 2 a las preguntas recurrentes de programadores principiantes sobre 3 - números de coma flotante que «no se suman correctamente», e información 3 + números de punto flotante que «no se suman correctamente», e información 4 4 más detallada sobre cómo funcionan los números decimales del IEEE 754, 5 5 cuándo y cómo usarlos correctamente, y qué usar en su lugar cuando 6 6 no son apropiados.
+6 -6
content/basic.html
··· 1 1 --- 2 2 title: Respuestas Básicas 3 - description: Respuestas concisas a preguntas básicas sobre aritmética de coma flotante, como «¿Por qué mis números no se suman bien?» 3 + description: Respuestas concisas a preguntas básicas sobre aritmética de punto flotante, como «¿por qué mis números no se suman bien?» 4 4 --- 5 5 6 - ### ¿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? 6 + ### ¿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? 7 7 8 - Porque internamente, los ordenadores usan un formato ([coma flotante](/formats/fp) [binario](/formats/binary)) 8 + Porque internamente, los ordenadores usan un formato ([punto flotante](/formats/fp) [binario](/formats/binary)) 9 9 que no puede representar de forma precisa números como 0.1, 0.2 o 0.3 *de ninguna manera*. 10 10 11 11 Cuando el código es compilado o interpretado, tu "0.1" se redondea ··· 35 35 ### ¿Por qué otros cálculos como 0.1 + 0.4 sí funcionan bien? 36 36 37 37 En este caso, el resultado (0.5) *sí* puede ser representado de manera exacta como un 38 - número de coma flotante, y es posible que los errores de redondeo de los datos de partida 38 + número de punto flotante, y es posible que los errores de redondeo de los datos de partida 39 39 se cancelen entre sí - aunque no se debería confiar excesivamente en esto (e.g. cuando 40 - esos dos números fueron almacenados en representaciones de coma flotante de diferente 40 + esos dos números fueron almacenados en representaciones de punto flotante de diferente 41 41 tamaño, los errores de redondeo pueden no cancelarse entre ellos). 42 42 43 43 En otros casos como 0.1 + 0.3, el resultado no es _realmente_ 0.4, pero está lo suficientemente 44 44 cerca como para que 0.4 sea el número más corto que está más cerca del resultado que cualquier 45 - otro número de coma flotante. La mayoría de lenguajes presentan ese número en vez de convertir 45 + otro número de punto flotante. La mayoría de lenguajes presentan ese número en vez de convertir 46 46 el resultado real a una fracción decimal. 47 47 48 48 Si quieres más información, puedes acudir a las [referencias](/references/).
+17 -11
content/formats/fp.html
··· 1 1 --- 2 - title: Floating Point Numbers 3 - description: Explanation of how floating-points numbers work and what they are good for 2 + title: Números de Coma Flotante 3 + description: Explicación de cómo funcionan los números de coma flotante y para qué son útiles 4 4 --- 5 5 6 - Why floating-point numbers are needed 7 - ------------------------------------- 6 + Por qué son necesarios los números de coma flotante 7 + --------------------------------------------------- 8 8 9 - 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? 9 + Como la memoria de los ordenadores es limitada, no puedes almacenar números 10 + con precisión infinita, no importa si usas [fracciones binarias](/formats/binary/) o 11 + decimales: en algún punto tienes que cortar. Pero ¿cuánta precisión se necesita? 12 + ¿Y *dónde* se necesita? ¿Cuántos dígitos enteros y cuántos fraccionarios? 10 13 11 - * 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. 12 - * 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. 13 - * 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. 14 - 15 - 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. 14 + * 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. 15 + * 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. 16 + * 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. 16 17 17 - Basically, having a fixed number of integer and fractional digits is not useful - and the solution is a format with a *floating point*. 18 + Para satisfacer al ingeniero y al diseñador de circuitos integrados, el formato 19 + tiene que ser preciso para números de órdenes de magnitud muy diferentes. Sin 20 + embargo, solo se necesita precisión *relativa*. Para satisfacer al físico, debe 21 + ser posible hacer cálculos que involucren números de órdenes muy dispares. 22 + 23 + 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*. 18 24 19 25 How floating-point numbers work 20 26 -------------------------------
+19 -7
content/index.html
··· 1 1 --- 2 - title: Lo Que Todo Programador Debería Saber Sobre Aritmética de Coma Flotante 3 - 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. 2 + title: Lo Que Todo Programador Debería Saber Sobre Aritmética de Punto Flotante 3 + 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 4 4 verification: True 5 5 --- 6 6 ··· 10 10 ¿Por qué mis números no se suman bien? 11 11 ====================================== 12 12 13 - O sea que has escrito algún código absurdamente simple, como por ejemplo<sup>1</sup>: 13 + O sea que has escrito algún código absurdamente simple, como por ejemplo: 14 14 15 15 0.1 + 0.2 16 16 ··· 24 24 25 25 * Explicar de manera concisa por qué obtuviste ese resultado inesperado 26 26 * Decirte cómo lidiar con este problema 27 - * 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 27 + * 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 28 28 29 29 Deberías ir a la sección de [Respuestas Básicas](/basic/) primero - ¡pero no termines ahí! 30 30 31 - <sup>1</sup> <small>Las Academias de la Lengua [recomiendan el punto como separador para las cifras 32 - decimales](http://www.tex-tipografia.com/marca_decimal.html), convergiendo así con 33 - la notación anglosajona que es la que se utiliza en la mayoría de lenguajes de programación.</small> 31 + ### Sobre la notación y la nomenclatura 32 + 33 + Aunque tanto la punto como el punto como marcas decimales son válidas según el 34 + Sistema Internacional y la norma ISO<sup>1</sup>, las Academias de la Lengua recomiendan el 35 + punto como separador para las cifras decimales<sup>2</sup>. Esto facilita las cosas, 36 + porque se converge así con la notación anglosajona que es la que se utiliza en la mayoría de 37 + lenguajes de programación. En este sitio se ha optado por la denominación «punto 38 + flotante» en lugar de «coma flotante», puesto que la Fundación del Español Urgente 39 + (<a href="http://www.fundeu.es/">Fundéu BBVA</a>) especificó en una consulta 40 + que debe haber correspondencia con el criterio adoptado para la marca decimal. 41 + 42 + <ol> 43 + <li>http://www.tex-tipografia.com/marca_decimal.html</li> 44 + <li>http://www.tex-tipografia.com/ortografia_notaciones.html</li> 45 + </ol>
+1 -1
content/references.html
··· 1 1 --- 2 2 title: Referencias 3 - description: Documentos con más información detallada sobre aritmética de coma flotante 3 + description: Documentos con más información detallada sobre aritmética de punto flotante 4 4 --- 5 5 6 6 Documentos que contienen más información detallada sobre los temas tratados en este sitio:
+8 -1
content/style.css
··· 75 75 } 76 76 77 77 #main li { 78 - list-style-type: square; 79 78 80 79 font-size: 15px; 81 80 82 81 line-height: 20px; 82 + } 83 + 84 + #main ul li { 85 + list-style-type: square; 86 + } 87 + 88 + #main ol li { 89 + list-style-type: decimal; 83 90 } 84 91 85 92 #sidebar {
+1 -1
content/xkcd.html
··· 1 1 --- 2 2 title: xkcd 3 - description: Cómo fastidiar a la gente que ha aprendido a *esperar* errores de redondeo en aritmética de coma flotante. 3 + description: Cómo fastidiar a la gente que ha aprendido a *esperar* errores de redondeo en aritmética de punto flotante 4 4 --- 5 5 6 6 o
+6 -6
layouts/default.html
··· 2 2 <html lang="es"> 3 3 <head> 4 4 <meta charset="utf-8"> 5 - <title>La Guía de la Coma Flotante - <%= @item[:title] %></title> 5 + <title>La Guía del Punto Flotante - <%= @item[:title] %></title> 6 6 <% if @item[:verification] %> 7 7 <meta name="google-site-verification" content="z_HIqTasE3WzbdPlabxF1mLMXO7pXofeGzF397vz20Q" /> 8 8 <% end %> ··· 18 18 <div id="main"> 19 19 <h1><%= @item[:title] %></h1> 20 20 <%= yield %> 21 - <g:plusone href="http://comaflotante.org/"></g:plusone> 21 + <g:plusone href="http://puntoflotante.org/"></g:plusone> 22 22 <div id="license"> 23 - <p>&copy; Publicado en <a href="http://comaflotante.org/">http://comaflotante.org/</a> bajo una licencia 23 + <p>&copy; Publicado en <a href="http://puntoflotante.org/">http://puntoflotante.org/</a> bajo una licencia 24 24 <a href="http://creativecommons.org/licenses/by/3.0/deed.es">Creative Commons Atribución Unported (BY)</a>. 25 25 Original en inglés por Michael Borgwardt en 26 26 <a href="http://floating-point-gui.de/">http://floating-point-gui.de/</a>.</p> ··· 28 28 </div> 29 29 <div id="sidebar"> 30 30 <img src="/logo.png"> 31 - <h2>La Guía de la Coma Flotante</h2> 31 + <h2>La Guía del Punto Flotante</h2> 32 32 <ul> 33 33 <li><a href="/">Inicio</a></li> 34 34 <li><a href="/basic/">Respuestas Básicas</a></li> ··· 39 39 <h2>Formatos Numéricos</h2> 40 40 <ul> 41 41 <li><a href="/formats/binary/">Fracciones Binarias</a></li> 42 - <li><a href="/formats/fp/">Coma Flotante</a></li> 42 + <li><a href="/formats/fp/">Punto Flotante</a></li> 43 43 <li><a href="/formats/exact/">Tipos Exactos</a></li> 44 44 <li><a href="/formats/integer/">Sobre Usar Enteros</a></li> 45 45 </ul> ··· 62 62 <li><a href="/languages/sql/">SQL</a></li> 63 63 </ul> 64 64 </div> 65 - <a href="http://github.com/Juanlu001/comaflotante.org"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png" alt="Fork me on GitHub" /></a> 65 + <a href="http://github.com/Juanlu001/puntoflotante.org"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png" alt="Fork me on GitHub" /></a> 66 66 67 67 </body> 68 68 </html>