···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Números de Coma Flotante</title>
55+ <title>La Guía del Punto Flotante - Números de Punto Flotante</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Explicación de cómo funcionan los números de coma flotante y para qué son útiles">
99+ <meta name="Description" content="Explicación de cómo funcionan los números de punto flotante y para qué son útiles">
10101111 <link rel="stylesheet" type="text/css" href="/style.css" media="screen">
1212 <link rel="shortcut icon" href="/favicon.ico" type="image/vnd.microsoft.icon">
···1414 </head>
1515 <body>
1616 <div id="main">
1717- <h1>Números de Coma Flotante</h1>
1818- <h2 id="por-qu-son-necesarios-los-nmeros-de-coma-flotante">Por qué son necesarios los números de coma flotante</h2>
1717+ <h1>Números de Punto Flotante</h1>
1818+ <h2 id="por-qu-son-necesarios-los-nmeros-de-punto-flotante">Por qué son necesarios los números de punto flotante</h2>
19192020<p>Como la memoria de los ordenadores es limitada, no puedes almacenar números
2121con precisión infinita, no importa si usas <a href="/formats/binary/">fracciones binarias</a> o
···3333embargo, solo se necesita precisión <em>relativa</em>. Para satisfacer al físico, debe
3434ser posible hacer cálculos que involucren números de órdenes muy dispares.</p>
35353636-<p>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 <em>coma flotante</em>.</p>
3636+<p>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 <em>punto flotante</em>.</p>
37373838-<h2 id="how-floating-point-numbers-work">How floating-point numbers work</h2>
3939-<p>The idea is to compose a number of two main parts:</p>
3838+<h2 id="cmo-funcionan-los-nmeros-de-punto-flotante">Cómo funcionan los números de punto flotante</h2>
3939+4040+<p>La idea es descomponer el número en dos partes:</p>
40414142<ul>
4242- <li>A <strong>significand</strong> that contains the number’s digits. Negative significands represent negative numbers.</li>
4343- <li>An <strong>exponent</strong> 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).</li>
4343+ <li>Una <strong>mantisa</strong> (también llamada coeficiente o significando) que contiene los dígitos del número. Mantisas negativas representan números negativos.</li>
4444+ <li>Un <strong>exponente</strong> 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.</li>
4445</ul>
45464646-<p>Such a format satisfies all the requirements:</p>
4747+<p>Este formato cumple todos los requisitos:</p>
47484849<ul>
4949- <li>It can represent numbers at wildly different magnitudes (limited by the length of the exponent)</li>
5050- <li>It provides the same relative accuracy at all magnitudes (limited by the length of the significand)</li>
5151- <li>It allows calculations across magnitudes: multiplying a very large and a very small number preserves the accuracy of both in the result.</li>
5050+ <li>Puede representar números de órdenes de magnitud enormemente dispares (limitado por la longitud del exponente).</li>
5151+ <li>Proporciona la misma precisión relativa para todos los órdenes (limitado por la longitud de la mantisa).</li>
5252+ <li>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.</li>
5253</ul>
53545454-<p>Decimal floating-point numbers usually take the form of <a href="http://en.wikipedia.org/wiki/Scientific_notation">scientific notation</a> with an
5555-explicit point always between the 1st and 2nd digits. The exponent is
5656-either written explicitly including the base, or an <strong>e</strong> is used to
5757-separate it from the significand.</p>
5555+<p>Los números de coma flotante decimales normalmente se expresan en
5656+<a href="http://es.wikipedia.org/wiki/Notaci%C3%B3n_cient%C3%ADfica">notación científica</a> con un
5757+punto explícito siempre entre el primer y el segundo dígitos. El exponente o bien
5858+se escribe explícitamente incluyendo la base, o se usa una <strong>e</strong> para
5959+separarlo de la mantisa.</p>
58605961<table>
6062 <thead>
6163 <tr>
6262- <th>Significand</th>
6363- <th>Exponent</th>
6464- <th>Scientific notation</th>
6565- <th>Fixed-point value</th>
6464+ <th>Mantisa</th>
6565+ <th>Exponente</th>
6666+ <th>Notación científica</th>
6767+ <th>Valor en punto fijo</th>
6668 </tr>
6769 </thead>
6870 <tbody>
···8284 <td>5</td>
8385 <td>-3</td>
8486 <td>5 ⋅ 10<sup>-3</sup></td>
8585- <td>0,005</td>
8787+ <td>0.005</td>
8688 </tr>
8789 <tr>
8890 <td>6.667</td>
···9395 </tbody>
9496</table>
95979696-<h2 id="the-standard">The standard</h2>
9797-<p>Nearly all hardware and programming languages use floating-point numbers in the same binary formats, which are defined in the <a href="http://en.wikipedia.org/wiki/IEEE_754-2008">IEEE 754</a> standard. The usual formats are 32 or 64 bits in total length:</p>
9898+<h2 id="el-estndar">El estándar</h2>
9999+100100+<p>Casi todo el hardware y lenguajes de programación utilizan números de punto flotante en los mismos
101101+formatos binarios, que están definidos en el estándar <a href="http://es.wikipedia.org/wiki/IEEE_coma_flotante">IEEE 754</a>.
102102+Los formatos más comunes son de 32 o 64 bits de longitud total:</p>
9810399104<table>
100105 <thead>
101106 <tr>
102102- <th>Format</th>
103103- <th>Total bits</th>
104104- <th>Significand bits</th>
105105- <th>Exponent bits</th>
106106- <th>Smallest number</th>
107107- <th>Largest number</th>
107107+ <th>Formato</th>
108108+ <th>Bits totales</th>
109109+ <th>Bits significativos</th>
110110+ <th>Bits del exponente</th>
111111+ <th>Número más pequeño</th>
112112+ <th>Número más grande</th>
108113 </tr>
109114 </thead>
110115 <tbody>
111116 <tr>
112112- <td>Single precision</td>
117117+ <td>Precisión sencilla</td>
113118 <td>32</td>
114114- <td>23 + 1 sign</td>
119119+ <td>23 + 1 signo</td>
115120 <td>8</td>
116116- <td>ca. 1.2 ⋅ 10<sup>-38</sup></td>
117117- <td>ca. 3.4 ⋅ 10<sup>38</sup></td>
121121+ <td>~1.2 ⋅ 10<sup>-38</sup></td>
122122+ <td>~3.4 ⋅ 10<sup>38</sup></td>
118123 </tr>
119124 <tr>
120120- <td>Double precision</td>
125125+ <td>Precisión doble</td>
121126 <td>64</td>
122122- <td>52 + 1 sign</td>
127127+ <td>52 + 1 signo</td>
123128 <td>11</td>
124124- <td>ca. 5.0 ⋅ 10<sup>-324</sup></td>
125125- <td>ca. 1.8 ⋅ 10<sup>308</sup></td>
129129+ <td>~5.0 ⋅ 10<sup>-324</sup></td>
130130+ <td>~1.8 ⋅ 10<sup>308</sup></td>
126131 </tr>
127132 </tbody>
128133</table>
129134130130-<p>Note that there are some peculiarities:</p>
135135+<p>Hay algunas pecularidades:</p>
131136132137<ul>
133133- <li>The <strong>actual bit sequence</strong> is the sign bit first, followed by the exponent and finally the significand bits.</li>
134134- <li>The exponent does not have a sign; instead an <strong>exponent bias</strong> 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.</li>
135135- <li>The significand’s most significant bit is assumed to be 1 and omitted, except for special cases.</li>
136136- <li>There are separate <strong>positive and a negative zero</strong> values, differing in the sign bit, where all other bits are 0. These must be considered equal even though their bit patterns are different.</li>
137137- <li>There are special <strong>positive and negative infinity</strong> 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.</li>
138138- <li>There are special <strong>not a number</strong> (or NaN) values where the exponent is all 1-bits and the significand is <em>not</em> 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 <em>not</em> be considered equal.</li>
138138+ <li>La <em>secuencia de bits</em> es primero el bit del signo, seguido del exponente y finalmente los bits significativos.</li>
139139+ <li>El exponente no tiene signo; en su lugar se le resta un <strong>desplazamiento</strong> (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.</li>
140140+ <li>Se asume que el bit más significativo de la mantisa es 1 y se omite, excepto para casos especiales.</li>
141141+ <li>Hay valores diferentes para <strong>cero positivo y cero negativo</strong>. 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.</li>
142142+ <li>Hay valores especiales <strong>no numéricos</strong> (NaN, «not a number» en inglés) en los que el exponente es todo unos y la mantisa <em>no</em> 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 <em>no</em> deben ser considerados iguales.</li>
139143</ul>
140144141145 <g:plusone href="http://puntoflotante.org/"></g:plusone>
···151155 <h2>La Guía del Punto Flotante</h2>
152156 <ul>
153157 <li><a href="/">Inicio</a></li>
154154- <li><a href="/basic/">Respuestas Básicas</a></li>
158158+ <li><a href="/basic/">Respuestas básicas</a></li>
155159 <li><a href="/references/">Referencias</a></li>
156160 <li><a href="/xkcd/">xkcd</a></li>
157161 </ul>
158162159163 <h2>Formatos Numéricos</h2>
160164 <ul>
161161- <li><a href="/formats/binary/">Fracciones Binarias</a></li>
162162- <li><a href="/formats/fp/">Punto Flotante</a></li>
163163- <li><a href="/formats/exact/">Tipos Exactos</a></li>
164164- <li><a href="/formats/integer/">Sobre Usar Enteros</a></li>
165165+ <li><a href="/formats/binary/">Fracciones binarias</a></li>
166166+ <li><a href="/formats/fp/">Punto flotante</a></li>
167167+ <li><a href="/formats/exact/">Tipos exactos</a></li>
168168+ <li><a href="/formats/integer/">Sobre usar enteros</a></li>
165169 </ul>
166170167171 <h2>Errores</h2>
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Lo Que Todo Programador Debería Saber Sobre Aritmética de Punto Flotante</title>
55+ <title>La Guía del Punto Flotante - Lo que todo programador debería saber sobre aritmética de punto flotante</title>
6677 <meta name="google-site-verification" content="z_HIqTasE3WzbdPlabxF1mLMXO7pXofeGzF397vz20Q" />
88···1616 </head>
1717 <body>
1818 <div id="main">
1919- <h1>Lo Que Todo Programador Debería Saber Sobre Aritmética de Punto Flotante</h1>
1919+ <h1>Lo que todo programador debería saber sobre aritmética de punto flotante</h1>
2020 <h2 id="o">o</h2>
21212222<h1 id="por-qu-mis-nmeros-no-se-suman-bien">¿Por qué mis números no se suman bien?</h1>
···4141 <li>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</li>
4242</ul>
43434444-<p>Deberías ir a la sección de <a href="/basic/">Respuestas Básicas</a> primero - ¡pero no termines ahí!</p>
4444+<p>Deberías ir a la sección de <a href="/basic/">Respuestas básicas</a> primero - ¡pero no termines ahí!</p>
45454646<h3 id="sobre-la-notacin-y-la-nomenclatura">Sobre la notación y la nomenclatura</h3>
4747···5555que debe haber correspondencia con el criterio adoptado para la marca decimal. </p>
56565757<ol>
5858- <li>http://www.tex-tipografia.com/marca_decimal.html</li>
5959- <li>http://www.tex-tipografia.com/ortografia_notaciones.html</li>
5858+ <li><em>La marca decimal</em> <<a href="http://www.tex-tipografia.com/marca_decimal.html">http://www.tex-tipografia.com/marca_decimal.html</a>></li>
5959+ <li><em>Las notaciones científicas en la Ortografía académica</em> <<a href="http://www.tex-tipografia.com/ortografia_notaciones.html">http://www.tex-tipografia.com/ortografia_notaciones.html</a>></li>
6060</ol>
61616262 <g:plusone href="http://puntoflotante.org/"></g:plusone>
···7272 <h2>La Guía del Punto Flotante</h2>
7373 <ul>
7474 <li><a href="/">Inicio</a></li>
7575- <li><a href="/basic/">Respuestas Básicas</a></li>
7575+ <li><a href="/basic/">Respuestas básicas</a></li>
7676 <li><a href="/references/">Referencias</a></li>
7777 <li><a href="/xkcd/">xkcd</a></li>
7878 </ul>
79798080 <h2>Formatos Numéricos</h2>
8181 <ul>
8282- <li><a href="/formats/binary/">Fracciones Binarias</a></li>
8383- <li><a href="/formats/fp/">Punto Flotante</a></li>
8484- <li><a href="/formats/exact/">Tipos Exactos</a></li>
8585- <li><a href="/formats/integer/">Sobre Usar Enteros</a></li>
8282+ <li><a href="/formats/binary/">Fracciones binarias</a></li>
8383+ <li><a href="/formats/fp/">Punto flotante</a></li>
8484+ <li><a href="/formats/exact/">Tipos exactos</a></li>
8585+ <li><a href="/formats/integer/">Sobre usar enteros</a></li>
8686 </ul>
87878888 <h2>Errores</h2>