···102102<p>Esto es conceptualmente muy evidente y fácil y tiene la ventaja de que escala
103103implícitamente el margen de error relativo con la magnitud de los valores.
104104Técnicamente es un poco más complejo, pero no mucho más de lo que puedas pensar,
105105-porque los números del IEEE 754 están diseñados para mantener su orden cuando
105105+porque los números de punto flotante del IEEE 754 están diseñados para mantener su orden cuando
106106sus secuencias de bits se interpretan como enteros.</p>
107107108108<p>Sin embargo, este método requiere que el lenguaje de programación soporte conversión
+1-1
errors/rounding/index.html
···5555se incrementa el último dígito. Este método es el que se enseña en el colegio normalmente
5656y es el que usa la mayoría de la gente. Minimiza el error, pero también introduce un sesgo
5757(lejos del cero).</li>
5858- <li><strong>Redondeo la mitad al par</strong> también conocido como el <strong>redondeo del banquero</strong> - si la
5858+ <li><strong>Redondeo mitad al par</strong> también conocido como el <strong>redondeo del banquero</strong> - si la
5959fracción truncada es mayor que la mitad de la base, se incrementa el último dígito.
6060Si es igual a la mitad de la base, se incrementa solamente si el resultado es par. Esto
6161minimiza el error y el sesgo, y por eso se prefiere en contabilidad. Es el método por
+21-15
languages/csharp/index.html
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Floating-point cheat sheet for C#</title>
55+ <title>La Guía del Punto Flotante - Cheat sheet de punto flotante para C#</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Tips for using floating-point and decimal numbers in C#">
99+ <meta name="Description" content="Trucos para usar punto flotante y números decimales en C#">
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>Floating-point cheat sheet for C#</h1>
1818- <h2 id="floating-point-types">Floating-Point Types</h2>
1919-<p>C# has <a href="/formats/fp/">IEEE 754</a> single and double precision types supported by keywords:</p>
1717+ <h1>Cheat sheet de punto flotante para C#</h1>
1818+ <h2 id="tipos-de-punto-flotante">Tipos de punto flotante</h2>
20192121-<pre><code> float f = 0.1f; // 32 bit float, note f suffix
2222- double d = 0.1d; // 64 bit float, suffix optional
2020+<p>C# tiene tipos de precisión sencilla y doble del <a href="/formats/fp/">IEEE 754</a>
2121+soportados por palabras clave:</p>
2222+2323+<pre><code> float f = 0.1f; // punto flotante de 32 bits, nótese el sufijo f
2424+ double d = 0.1d; // punto flotante de 64 bits, sufijo opcional
2325</code></pre>
24262525-<h2 id="decimal-types">Decimal Types</h2>
2626-<p>C# has a 128 bit <a href="/formats/exact/">limited-precision</a> decimal type denoted by the keyword
2727-<code>decimal</code>:</p>
2727+<h2 id="tipos-decimales">Tipos decimales</h2>
2828+2929+<p>C# tiene un tipo decimal de 128 bit de <a href="/formats/exact/">precisión limitada</a>
3030+denotado con la palabra clave <code>decimal</code>:</p>
28312929-<pre><code> decimal myMoney = 300.1m; // note m suffix on the literal
3232+<pre><code> decimal myMoney = 300.1m; // Nótese el sufijo m en el literal
3033</code></pre>
31343232-<h2 id="how-to-round">How to Round</h2>
3333-<p>The <code>Math.Round()</code> method works with the double and decimal types, and allows you to specify a <a href="/errors/rounding/">rounding mode</a>:</p>
3535+<h2 id="cmo-redondear">Cómo redondear</h2>
34363535-<pre><code> Math.Round(1.25m, 1, MidpointRounding.AwayFromZero); // returns 1.3
3737+<p>El método <code>Math.Round()</code> funciona con los tipos <code>double</code> y <code>decimal</code>,
3838+y permite especificar el <a href="/errors/rounding/">método de redondeo</a>:</p>
3939+4040+<pre><code> Math.Round(1.25m, 1, MidpointRounding.AwayFromZero); // Devuelve 1.3
3641</code></pre>
37423838-<h2 id="resources">Resources</h2>
4343+<h2 id="recursos">Recursos</h2>
4444+3945<ul>
4046 <li><a href="http://msdn.microsoft.com/en-us/library/618ayhy6%28v=VS.80%29.aspx">C# Reference</a>
4147 <ul>
+35-25
languages/java/index.html
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Floating-point cheat sheet for Java</title>
55+ <title>La Guía del Punto Flotante - Cheat sheet de punto flotante para Java</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Tips for using floating-point and decimal numbers in Java">
99+ <meta name="Description" content="Trucos para usar punto flotante y números decimales en Java">
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>Floating-point cheat sheet for Java</h1>
1818- <h2 id="floating-point-types">Floating-Point Types</h2>
1919-<p>Java has <a href="/formats/fp/">IEEE 754</a> single and double precision types supported by keywords:</p>
1717+ <h1>Cheat sheet de punto flotante para Java</h1>
1818+ <h2 id="tipos-de-punto-flotante">Tipos de punto flotante</h2>
1919+2020+<p>Java tiene tipos de precisión sencilla y doble del <a href="/formats/fp/">IEEE 754</a> soportados
2121+por palabras clave:</p>
20222121-<pre><code> float f = 0.1f; // 32 bit float, note f suffix
2222- double d = 0.1d; // 64 bit float, suffix optional
2323+<pre><code> float f = 0.1f; // punto flotante de 32 bits, nótese el sufijo f
2424+ double d = 0.1d; // punto flotante de 64 bits, sufijo opcional
2325</code></pre>
24262525-<p>The <code>strictfp</code> keyword on classes, interfaces and methods forces all intermediate results of floating-point calculations to be IEEE 754 values as well, guaranteeing identical results on all platforms. Without that keyword, implementations can use an extended exponent range where available, resulting in more precise results and faster execution on many common CPUs.</p>
2727+<p>La palabra clave <code>strictfp</code> en las clases, interfaces y métodos fuerza también
2828+a que todos los resultados intermedios de cálculos en punto flotante sean
2929+valores IEEE 754, garantizando resultados idénticos en todas las plataformas.
3030+Sin esa palabra clave, las implementaciones pueden usar un rango extendido para
3131+el exponente, llevando a resultados más precisos y ejecuciones más rápidas
3232+en bastantes CPUs.</p>
3333+3434+<h2 id="tipos-decimales">Tipos decimales</h2>
26352727-<h2 id="decimal-types">Decimal Types</h2>
2828-<p>Java has an <a href="/formats/exact/">arbitrary-precision</a> decimal type named <code>java.math.BigDecimal</code>, which
2929-also allows to choose the <a href="/errors/rounding/">rounding mode</a>.</p>
3636+<p>Java tiene un tipo decimal de <a href="/formats/exact/">precisión arbitraria</a> llamado
3737+<code>java.math.BigDecimal</code>, que también permite elegir el <a href="/errors/rounding/">método de redondeo</a>.</p>
30383139<pre><code> BigDecimal a = new BigDecimal("0.1");
3240 BigDecimal b = new BigDecimal("0.2");
3333- BigDecimal c = a.add(b); // returns a BigDecimal representing exactly 0.3
4141+ BigDecimal c = a.add(b); // Devuelve un BigDecimal que representa exactamente 0.3
3442</code></pre>
35433636-<h2 id="how-to-round">How to Round</h2>
3737-<p>To get a String:</p>
4444+<h2 id="cmo-redondear">Cómo redondear</h2>
38453939-<pre><code> String.format("%.2f", 1.2399) // returns "1.24"
4040- String.format("%.3f", 1.2399) // returns "1.240"
4141- String.format("%.2f", 1.2) // returns "1.20"
4646+<p>Para obtener una cadena:</p>
4747+4848+<pre><code> String.format("%.2f", 1.2399) // Devuelve "1.24"
4949+ String.format("%.3f", 1.2399) // Devuelve "1.240"
5050+ String.format("%.2f", 1.2) // Devuelve "1.20"
4251</code></pre>
43524444-<p>To print to standard output (or any <code>PrintStream</code>):</p>
5353+<p>Para imprimir por la salida estándar (o cualquier <code>PrintStream</code>):</p>
45544646-<pre><code> System.out.printf("%.2f", 1.2399) // same syntax as String.format()
5555+<pre><code> System.out.printf("%.2f", 1.2399) // Misma sintaxis que String.format()
4756</code></pre>
48574949-<p>If you don’t want trailing zeroes:</p>
5858+<p>Si no quieres ceros a la derecha:</p>
50595151-<pre><code> new DecimalFormat("0.00").format(1.2)// returns "1.20"
5252- new DecimalFormat("0.##").format(1.2)// returns "1.2"
6060+<pre><code> new DecimalFormat("0.00").format(1.2)// Devuelve "1.20"
6161+ new DecimalFormat("0.##").format(1.2)// Devuelve "1.2"
5362</code></pre>
54635555-<p>If you need a specific <a href="/errors/rounding/">rounding mode</a>:</p>
6464+<p>Si necesitas un <a href="/errors/rounding/">método de redondeo</a> específico:</p>
56655757-<pre><code> new BigDecimal("1.25").setScale(1, RoundingMode.HALF_EVEN); // returns 1.2
6666+<pre><code> new BigDecimal("1.25").setScale(1, RoundingMode.HALF_EVEN); // Devuelve 1.2
5867</code></pre>
59686060-<h2 id="resources">Resources</h2>
6969+<h2 id="recursos">Recursos</h2>
7070+6171<ul>
6272 <li><a href="http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html">Java Language Specification</a><br />
6373 <ul>
+18-13
languages/javascript/index.html
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Floating-point cheat sheet for JavaScript</title>
55+ <title>La Guía del Punto Flotante - Cheat sheet de punto flotante para JavaScript</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Tips for using floating-point and decimal numbers in JavaScript">
99+ <meta name="Description" content="Trucos para usar punto flotante y números decimales en JavaScript">
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>Floating-point cheat sheet for JavaScript</h1>
1818- <h2 id="floating-point-types">Floating-Point Types</h2>
1919-<p>JavaScript is dynamically typed and will often convert implicitly between strings and floating-point numbers (which are IEEE 64 bit values). To force a variable to floating-point, use the global <code>parseFloat()</code> function.</p>
1717+ <h1>Cheat sheet de punto flotante para JavaScript</h1>
1818+ <h2 id="tipos-de-punto-flotante">Tipos de punto flotante</h2>
1919+2020+<p>JavaScript tiene tipado dinámico y a veces convertirá implícitamente entre cadenas
2121+y números de punto flotante (que son valores IEEE de 64 bits). Para forzar una variable
2222+a punto flotante, utiliza la función <code>parseFloat()</code>.</p>
20232124<pre><code> var num = parseFloat("3.5");
2225</code></pre>
23262424-<h2 id="decimal-types">Decimal Types</h2>
2727+<h2 id="tipos-decimales">Tipos decimales</h2>
25282626-<p>The best decimal type for JavaScript seems to be a port of <a href="/languages/java/">Java’s</a> <code>BigDecimal</code> class, which also supports <a href="/errors/rounding/">rounding modes</a>:</p>
2929+<p>El mejor tipo decimal para JavaScript parece ser una migración de la clase de
3030+<a href="/languages/java/">Java</a> <code>BigDecimal</code>, que también soporta <a href="/errors/rounding/">métodos de redondeo</a>:</p>
27312832<pre><code> var a = new BigDecimal("0.01");
2933 var b = new BigDecimal("0.02");
···3135 var d = c.setScale(1, BigDecimal.prototype.ROUND_HALF_UP);
3236</code></pre>
33373434-<h2 id="how-to-round">How to Round</h2>
3838+<h2 id="cmo-redondear">Cómo redondear</h2>
35393640<pre><code> var num = 5.123456;
3737- num.toPrecision(1) //returns 5 as string
3838- num.toPrecision(2) //returns 5.1 as string
3939- num.toPrecision(4) //returns 5.123 as string
4141+ num.toPrecision(1) //Devuelve 5 como una cadena
4242+ num.toPrecision(2) //Devuelve 5.1 como una cadena
4343+ num.toPrecision(4) //Devuelve 5.123 como una cadena
4044</code></pre>
41454242-<p>Using a specific rounding mode:</p>
4646+<p>Utilizando un método de redondeo específico:</p>
43474448<pre><code> new BigDecimal("1.25").setScale(1, BigDecimal.prototype.ROUND_HALF_UP);
4549</code></pre>
46504747-<h2 id="resources">Resources</h2>
5151+<h2 id="recursos">Recursos</h2>
5252+4853<ul>
4954 <li><a href="https://github.com/dtrebbien/BigDecimal.js">BigDecimal for JavaScript</a></li>
5055 <li><a href="https://developer.mozilla.org/en/JavaScript/Reference">Core JavaScript Reference</a><br />
+39-26
languages/perl/index.html
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Floating-point cheat sheet for Perl</title>
55+ <title>La Guía del Punto Flotante - Cheat sheet de punto flotante para Perl</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Tips for using floating-point and decimal numbers in Perl">
99+ <meta name="Description" content="Trucos para usar punto flotante y números decimales en Perl">
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>Floating-point cheat sheet for Perl</h1>
1818- <h2 id="floating-point-types">Floating-Point Types</h2>
1919-<p>Perl supports platform-native floating-point as scalar values; in practice this usually means <a href="/formats/fp/">IEEE 754</a> double precision.</p>
1717+ <h1>Cheat sheet de punto flotante para Perl</h1>
1818+ <h2 id="tipos-de-punto-flotante">Tipos de punto flotante</h2>
1919+2020+<p>Perl soporta números de punto flotante nativos de la plataforma como valores
2121+escalares; en la práctica esto significa precisión doble del <a href="/formats/fp/">IEEE 754</a>.</p>
20222121-<h2 id="exact-types">Exact Types</h2>
2222-<p>Perl can also store decimal numbers as strings, but the builtin arithmetic operators will convert them to integer or floating-point values to perform the operation.</p>
2323+<h2 id="tipos-exactos">Tipos exactos</h2>
2424+2525+<p>Perl también puede almacenar números decimales como cadenas, pero los operadores
2626+aritméticos integrados los convertirán a enteros o a valores de punto flotante
2727+para realizar la operación.</p>
23282424-<p>The <code>Math::BigFloat</code> extension provides an arbitrary-precision <a href="/formats/exact/">decimal type</a>:</p>
2929+<p>La extensión <code>Math::BigFloat</code> proporciona un <a href="/formats/exact/">tipo decimal</a> de
3030+precisión arbitraria:</p>
25312632<pre><code> use Math::BigFloat ':constant'
2727- my $f = 0.1 + 0.2; # returns exactly 0.3
3333+ my $f = 0.1 + 0.2; # Devuelve exactamente 0.3
2834</code></pre>
29353030-<p>The <code>Number::Fraction</code> extension provides a fraction type that overloads the arithmetic operators with <a href="/formats/exact/">symbolic</a> fraction arithmetic:</p>
3636+<p>La extensión <code>Number::Fraction</code> proporciona un tipo de datos fraccionario que
3737+sobrecarga los operadores con aritmética <a href="/formats/exact/">simbólica</a> para fracciones:</p>
31383239<pre><code> use Number::Fraction ':constants';
3333- my $f = '1/2' - '1/3'; # returns 1/6
4040+ my $f = '1/2' - '1/3'; # Devuelve 1/6
3441</code></pre>
35423636-<p>The <code>Math::BigRat</code> extension provides similar functionality. Its advantage is compatibility with the
3737-<code>Math::BigInt</code> and <code>Math::BigFloat</code> extensions, but it does not seem to support fraction literals.</p>
4343+<p>La extensión <code>Math::BigRat</code> proporciona funcionalidad similar. Su ventaja es
4444+compatibilidad con las extensiones <code>Math::BigInt</code> y <code>Math::BigFloat</code>, pero
4545+no parece soportar literales fraccionarios.</p>
4646+4747+<h2 id="cmo-redondear">Cómo redondear</h2>
38483939-<h2 id="how-to-round">How to Round</h2>
4040-<p>To get a string:</p>
4949+<p>Para obtener una cadena:</p>
41504242-<pre><code> $result = sprintf("%.2f", 1.2345); # returns 1.23
5151+<pre><code> $result = sprintf("%.2f", 1.2345); # Devuelve 1.23
4352</code></pre>
44534545-<p>To format output:</p>
5454+<p>Para formatear la salida:</p>
46554747-<pre><code> printf("%.2f", 1.2); # prints 1.20
5656+<pre><code> printf("%.2f", 1.2); # Imprime 1.20
4857</code></pre>
49585050-<p>Note that this implicitly uses <a href="/errors/rounding/">round-to-even</a>. The variable <code>$#</code> contains the default format for printing numbers, but its use is considered deprecated.</p>
5959+<p>Ten en cuenta que esto utiliza implícitamente <a href="/errors/rounding/">mitad al par</a>.
6060+La variable <code>$#</code> contiene el formato por defecto para imprimir números, pero
6161+su uso se considera obsoleto.</p>
51625252-<p>The <code>Math::Round</code> extension provides various functions for rounding floating-point values:</p>
6363+<p>La extensión <code>Math::Round</code> proporciona varias funciones para redondear valores
6464+de punto flotante:</p>
53655466<pre><code> use Math::Round qw(:all);
5555- $result = nearest(.1, 4.567) # prints 4.6
5656- $result = nearest(.01, 4.567) # prints 4.57
6767+ $result = nearest(.1, 4.567) # Imprime 4.6
6868+ $result = nearest(.01, 4.567) # Imprime 4.57
5769</code></pre>
58705959-<p>The <code>Math::BigFloat</code> extension also supports various <a href="/errors/rounding/">rounding modes</a>:</p>
7171+<p>La extensión <code>Math::BigFloat</code> también soporta varios <a href="/errors/rounding/">métodos de redondeo</a>:</p>
60726173<pre><code> use Math::BigFloat;
6274 my $n = Math::BigFloat->new(123.455);
6363- my $f1 = $n->round('','-2','common'); # returns 123.46
6464- my $f2 = $n->round('','-2','zero'); # returns 123.45
7575+ my $f1 = $n->round('','-2','common'); # Devuelve 123.46
7676+ my $f2 = $n->round('','-2','zero'); # Devuelve 123.45
6577</code></pre>
66786767-<h2 id="resources">Resources</h2>
7979+<h2 id="recursos">Recursos</h2>
8080+6881<ul>
6982 <li><a href="http://perldoc.perl.org/perlnumber.html">Semantics of numbers and numeric operations in Perl</a></li>
7083 <li><a href="http://perldoc.perl.org/functions/sprintf.html">sprintf function</a></li>
+20-12
languages/php/index.html
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Floating-point cheat sheet for PHP</title>
55+ <title>La Guía del Punto Flotante - Cheat sheet de punto flotante para PHP</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Tips for using floating-point and decimal numbers in PHP">
99+ <meta name="Description" content="Trucos para usar punto flotante y números decimales en PHP">
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>Floating-point cheat sheet for PHP</h1>
1818- <h2 id="floating-point-types">Floating-Point Types</h2>
1919-<p>PHP is dynamically typed and will often convert implicitly between strings and floating-point numbers (which are platform-dependant, but typically IEEE 64 bit values). To force a value to floating-point, evaluate it in a numerical context:</p>
1717+ <h1>Cheat sheet de punto flotante para PHP</h1>
1818+ <h2 id="tipos-de-punto-flotante">Tipos de punto flotante</h2>
1919+2020+<p>PHP tiene tipado dinámico y a veces convertirá implícitamente entre cadenas y
2121+números de punto flotante (que son dependientes de la plataforma, pero normalmente
2222+valores IEEE de 64 bits). Para forzar un valor a punto flotante, evalúalo en un
2323+contexto numérico: </p>
20242125<pre><code> $foo = 0 + "10.5";
2226</code></pre>
23272424-<h2 id="decimal-types">Decimal Types</h2>
2525-<p>The BC Math extension implements <a href="/formats/exact/">arbitrary-precision</a> decimal math:</p>
2828+<h2 id="tipos-decimales">Tipos decimales</h2>
2929+3030+<p>La extensión BCMath (Binary Calculator) implementa aritmética de <a href="/formats/exact/">precisión
3131+arbitraria</a> decimal:</p>
26322733<pre><code> $a = '0.1';
2834 $b = '0.2';
2929- echo bcadd($a, $b); // prints 0.3
3535+ echo bcadd($a, $b); // Imprime 0.3
3036</code></pre>
31373232-<h2 id="how-to-round">How to Round</h2>
3333-<p>Rounding can be done with the <code>number_format()</code> function:</p>
3838+<h2 id="cmo-redondear">Cómo redondear</h2>
3939+4040+<p>Redondear se puede hacer con la función <code>number_format()</code>:</p>
34413542<pre><code> $number = 4.123;
3636- echo number_format($number, 2); // prints 4.12
4343+ echo number_format($number, 2); // Imprime 4.12
3744</code></pre>
38453939-<h2 id="resources">Resources</h2>
4646+<h2 id="recursos">Recursos</h2>
4747+4048<ul>
4149 <li><a href="http://www.php.net/manual/en/index.php">PHP manual</a>
4250 <ul>
+30-18
languages/python/index.html
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Floating-point cheat sheet for Python</title>
55+ <title>La Guía del Punto Flotante - Cheat sheet de punto flotante para Python</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Tips for using floating-point and decimal numbers in Python">
99+ <meta name="Description" content="Trucos para usar punto flotante y números decimales en Python">
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>Floating-point cheat sheet for Python</h1>
1818- <h2 id="floating-point-types">Floating-Point Types</h2>
1919-<p>Almost all platforms map Python floats to <a href="/formats/fp/">IEEE 754</a>
2020-double precision.</p>
1717+ <h1>Cheat sheet de punto flotante para Python</h1>
1818+ <h2 id="tipos-de-punto-flotante">Tipos de punto flotante</h2>
1919+2020+<p>Casi todas las plataformas asocian los <code>float</code> de Python a números de punto
2121+flotante de doble precisión del <a href="/formats/fp/">IEEE 754</a>.</p>
21222223<pre><code> f = 0.1
2324</code></pre>
24252525-<h2 id="decimal-types">Decimal Types</h2>
2626-<p>Python has an <a href="/formats/exact/">arbitrary-precision</a> decimal type named <code>Decimal</code> in the <code>decimal</code> module, which also allows to choose the <a href="/errors/rounding/">rounding mode</a>.</p>
2626+<h2 id="tipos-decimales">Tipos decimales</h2>
2727+2828+<p>Python tiene un tipo de <a href="/formats/exact/">precision arbitraria</a> decimal llamado
2929+<code>Decimal</code> en el módulo <code>decimal</code>, que también permite elegir el <a href="/errors/rounding/">método de
3030+redondeo</a>.</p>
27312832<pre><code> a = Decimal('0.1')
2933 b = Decimal('0.2')
3030- c = a + b # returns a Decimal representing exactly 0.3
3434+ c = a + b # Devuelve un Decimal que representa exactamente 0.3
3135</code></pre>
32363333-<h2 id="how-to-round">How to Round</h2>
3434-<p>To get a string:</p>
3737+<h2 id="cmo-redondear">Cómo redondear</h2>
35383636-<pre><code> "%.2f" % 1.2399 # returns "1.24"
3737- "%.3f" % 1.2399 # returns "1.240"
3838- "%.2f" % 1.2 # returns "1.20"
3939+<p>Para obtener una cadena:</p>
4040+4141+<pre><code> "{:.2f}".format(1.2399) # Devuelve "1.24"
4242+ "{:.3f}".format(1.2399) # Devuelve "1.240"
4343+ "{:.2f}".format(1.2) # Devuelve "1.20"
3944</code></pre>
40454141-<p>To print to standard output:</p>
4646+<p>Para imprimir por la salida estándar (Python 2.x):</p>
42474343-<pre><code> print "%.2f" % 1.2399 # just use print and string formatting
4848+<pre><code> print "{:.2f}".format(1.2399)
4449</code></pre>
45504646-<p>Specific <a href="/errors/rounding/">rounding modes</a> and other parameters can be defined in a Context object:</p>
5151+<p>y en Python 3.x:</p>
5252+5353+<pre><code> print("{:.2f}".format(1.2399))
5454+</code></pre>
5555+5656+<p><a href="/errors/rounding/">Métodos de redondeo</a> específicos y otros parámetros se pueden
5757+definir enun objeto <code>Context</code>:</p>
47584859<pre><code> getcontext().prec = 7
4960</code></pre>
50615151-<h2 id="resources">Resources</h2>
6262+<h2 id="recursos">Recursos</h2>
6363+5264<ul>
5365 <li><a href="http://docs.python.org/tutorial/floatingpoint.html">Floating Point Arithmetic: Issues and Limitations</a></li>
5466 <li><a href="http://docs.python.org/library/decimal.html">The decimal module</a>
+26-18
languages/sql/index.html
···22<html lang="es">
33 <head>
44 <meta charset="utf-8">
55- <title>La Guía del Punto Flotante - Floating-point cheat sheet for SQL</title>
55+ <title>La Guía del Punto Flotante - Cheat sheet de punto flotante para SQL</title>
6677 <meta name="generator" content="nanoc 3.1.2">
8899- <meta name="Description" content="Tips for using floating-point and decimal numbers in SQL">
99+ <meta name="Description" content="Trucos para usar punto flotante y números decimales en SQL">
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>Floating-point cheat sheet for SQL</h1>
1818- <h2 id="floating-point-types">Floating-Point Types</h2>
1919-<p>The SQL standard defines three binary floating-point types:</p>
1717+ <h1>Cheat sheet de punto flotante para SQL</h1>
1818+ <h2 id="tipos-de-punto-flotante">Tipos de punto flotante</h2>
1919+2020+<p>El estándar SQL define tres tipos de punto flotante binarios:</p>
20212122<ul>
2222- <li><code>REAL</code> has implementation-dependant precision (usually maps to a hardware-supported type like IEEE 754 single or double precision)</li>
2323- <li><code>DOUBLE PRECISION</code> has implementation-dependant precision which is greater than <code>REAL</code> (usually maps to IEEE 754 double precision)</li>
2424- <li><code>FLOAT(N)</code> has at least <code>N</code> binary digits of precision, with an implementation-dependant maximum for <code>N</code></li>
2323+ <li><code>REAL</code> tiene precisión dependiente de la implementación (normalmente se asocia a un tipo a nivel de hardware como precisión sencilla o doble del IEEE 754).</li>
2424+ <li><code>DOUBLE PRECISION</code> tiene precisión dependiente de la implementación que es mayor que la de <code>REAL</code> (normalmente se asocia al precisión doble del IEEE 754).</li>
2525+ <li><code>FLOAT(N)</code> tiene al menos <code>N</code> dígitos binarios de precisión, con un máximo para <code>N</code> que depende de la implementación.</li>
2526</ul>
26272727-<p>The exponent range for all three types is implementation-dependant as well.</p>
2828+<p>El rango del exponente para los tres tipos también depende de la implementación.</p>
28292929-<h2 id="decimal-types">Decimal Types</h2>
3030-<p>The standard defines two fixed-point decimal types:</p>
3030+<h2 id="tipos-decimales">Tipos decimales</h2>
3131+3232+<p>El estándar define dos tipos decimales de punto fijo:</p>
31333234<ul>
3333- <li><code>NUMERIC(M,N)</code> has exactly <code>M</code> total digits, <code>N</code> of them after the decimal point</li>
3434- <li><code>DECIMAL(M,N)</code> is the same as <code>NUMERIC(M,N)</code>, except that it is allowed to have more than <code>M</code> total digits</li>
3535+ <li><code>NUMERIC(M,N)</code> tiene exactamente <code>M</code> dígitos en total, <code>N</code> de los cuales después del punto decimal.</li>
3636+ <li><code>DECIMAL(M,N)</code> es lo mismo que <code>NUMERIC(M,N)</code>, excepto porque permite tener más de <code>M</code> dígitos totales.</li>
3537</ul>
36383737-<p>The maximum values of <code>M</code> and <code>M</code> are implementation-dependant. Vendors often implement the two types identically.</p>
3939+<p>Los valores máximos de <code>M</code> y <code>N</code> dependen de la implementación. Los proveedores
4040+normalmente implementan los dos tipos de manera idéntica.</p>
38413939-<h2 id="how-to-round">How to Round</h2>
4242+<h2 id="cmo-redondear">Cómo redondear</h2>
40434141-<p>The SQL standard defines no explicit rounding, but most vendors provide a <code>ROUND()</code> or <code>TRUNC()</code> function.</p>
4444+<p>El estándar SQL no define explícitamente el redondeo, pero la mayoría de los
4545+proveedores proporciona una función <code>ROUND()</code> o <code>TRUNC()</code>.</p>
4646+4747+<p>Sin embargo, normalmente no tiene mucho sentido redondear dentro de la base de
4848+datos, puesto que su función es <em>almacenar</em> los datos, mientras que redondear
4949+es un aspecto de la <em>representación</em> de los datos, y debe por tanto hacerse
5050+en el código de la capa de presentación.</p>
42514343-<p>However, it usually makes little sense to round within the database, since its job is <em>storing</em> data, while rounding is an aspect of <em>displaying</em> data, and should therefore be done by the code in the presentation layer.</p>
5252+<h2 id="recursos">Recursos</h2>
44534545-<h2 id="resources">Resources</h2>
4654<ul>
4755 <li><a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38640">Official ISO SQL 2008 standard (non-free)</a> </li>
4856 <li><a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt">SQL 92 draft (free)</a></li>