Articulo de referencia

Redondeo

Gráficas del resultado, y , del redondeo de x mediante diferentes métodos. Para mayor claridad, las gráficas se muestran desplazadas respecto a los valores enteros de y . En el ...

Gráficas del resultado, y , del redondeo de x mediante diferentes métodos. Para mayor claridad, las gráficas se muestran desplazadas respecto a los valores enteros de y . En el archivo SVG, coloque el cursor sobre un método para resaltarlo y, en navegadores compatibles con SMIL , haga clic para seleccionarlo o deseleccionarlo.

El redondeo consiste en ajustar un número a un valor aproximado y más conveniente, a menudo con una representación más corta o sencilla. Por ejemplo, sustituir 23,4476 dólares por 23,45 dólares, la fracción 312/937 por 1/3 o la expresión √2 por 1,414.

El redondeo se utiliza a menudo para obtener un valor más fácil de informar y comunicar que el original. También puede ser importante para evitar informar con excesiva precisión un número, una medida o una estimación calculada; por ejemplo, una cantidad que se calculó como 123456, pero cuya precisión se sabe que es de solo unos pocos cientos de unidades, generalmente se expresa mejor como "aproximadamente 123500".

Por otro lado, el redondeo de números exactos introduce cierto error de redondeo en el resultado. El redondeo es casi inevitable al reportar muchos cálculos, especialmente al dividir dos números en aritmética de enteros o de punto fijo ; al calcular funciones matemáticas como raíces cuadradas , logaritmos y senos ; o al usar una representación de punto flotante con un número fijo de cifras significativas . En una secuencia de cálculos, estos errores de redondeo generalmente se acumulan y, en ciertos casos mal condicionados, pueden hacer que el resultado carezca de sentido.

El redondeo preciso de funciones matemáticas trascendentales es difícil porque no se puede conocer de antemano la cantidad de dígitos adicionales que deben calcularse para determinar si se debe redondear hacia arriba o hacia abajo. Este problema se conoce como « el dilema del creador de tablas ».

El redondeo tiene muchas similitudes con la cuantización que se produce cuando las cantidades físicas deben codificarse mediante números o señales digitales .

A veces se utiliza un signo de igual ondulado ( ≈ ) para indicar el redondeo de números exactos, por ejemplo, 9,98 ≈ 10. Este signo fue introducido por Alfred George Greenhill en 1892. [ 1 ]

Las características ideales de los métodos de redondeo incluyen:

  1. Rounding should be done by a function. This way, when the same input is rounded in different instances, the output is unchanged.
  2. Calculations done with rounding should be close to those done without rounding.
    • As a result of (1) and (2), the output from rounding should be close to its input, often as close as possible.
  3. To be considered rounding, the range will be a subset of the domain, often discrete. A classical range is the integers.
  4. Rounding should preserve symmetries that already exist between the domain and range. With finite precision (or a discrete domain), this translates to removing bias.
  5. A rounding method should have utility in computer science or human arithmetic where finite precision is used, and speed is a consideration.

Because it is not usually possible for a method to satisfy all ideal characteristics, many different rounding methods exist.

As a general rule, rounding is idempotent;[2] i.e., once a number has been rounded, rounding it again to the same precision will not change its value. Rounding functions are also monotonic; i.e., rounding two numbers to the same absolute precision will not exchange their order (but may give the same value). In the general case of a discrete range, they are piecewise constant functions.

Types of rounding

Typical rounding problems include:

Rounding to integer

La forma más básica de redondeo consiste en reemplazar un número arbitrario por un entero. Todos los modos de redondeo que se describen a continuación son implementaciones concretas de un procedimiento abstracto de un solo argumento llamado "round()". Se trata de funciones reales (a excepción de aquellas que utilizan aleatoriedad).

Redondeo dirigido a un número entero

Estos cuatro métodos se denominan redondeo dirigido a un entero , ya que los desplazamientos desde el número original x hasta el valor redondeado y se dirigen hacia o desde el mismo valor límite (0, +∞ o −∞ ). El redondeo dirigido se utiliza en aritmética de intervalos y suele ser necesario en cálculos financieros.

Si x es positivo, redondear hacia abajo es lo mismo que redondear hacia cero, y redondear hacia arriba es lo mismo que redondear alejándose de cero. Si x es negativo, redondear hacia abajo es lo mismo que redondear alejándose de cero, y redondear hacia arriba es lo mismo que redondear hacia cero. En cualquier caso, si x es un número entero, y es simplemente x .

Cuando se realizan muchos cálculos en secuencia, la elección del método de redondeo puede tener un efecto muy significativo en el resultado. Un ejemplo famoso involucró un nuevo índice establecido por la Bolsa de Valores de Vancouver en 1982. Inicialmente se fijó en 1000,000 (con tres decimales de precisión) y, después de 22 meses, había caído a aproximadamente 520, aunque el mercado parecía estar al alza. El problema se debía a que el índice se recalculaba miles de veces al día y siempre se truncaba (redondeaba hacia abajo) a 3 decimales, de tal manera que los errores de redondeo se acumulaban. Recalcular el índice para el mismo período utilizando el redondeo a la milésima más cercana en lugar del truncamiento corrigió el valor del índice de 524,811 a 1098,892. [ 3 ]

En los ejemplos que se muestran a continuación, sgn( x ) se refiere a la función signo aplicada al número original, x .

Redondeando hacia abajo

Se puede redondear hacia abajo (o tomar la parte entera , o redondear hacia el infinito negativo ): y es el entero más grande que no excede a x .

y=Floor(incógnita)=incógnita=incógnita{\displaystyle y=\mathrm {floor} (x)=\left\lfloor x\right\rfloor =-\left\lceil -x\right\rceil }

Por ejemplo, 23,7 se redondea a 23 y −23,2 se redondea a −24.

Redondeando

También se puede redondear hacia arriba (o tomar el techo , o redondear hacia el infinito positivo ): y es el entero más pequeño que no es menor que x .

y=fortificar techo(incógnita)=incógnita=incógnita{\displaystyle y=\operatorname {ceil} (x)=\left\lceil x\right\rceil =-\left\lfloor -x\right\rfloor }

Por ejemplo, 23,2 se redondea a 24 y −23,7 se redondea a −23.

Redondeando hacia cero

También se puede redondear hacia cero (o truncar , o redondear alejándose del infinito ): y es el entero más cercano a x de tal manera que esté entre 0 y x (inclusive); es decir, y es la parte entera de x , sin sus dígitos fraccionarios.

y=truncar(incógnita)=sgn(incógnita)|incógnita|=sgn(incógnita)|incógnita|={incógnitaincógnita0incógnitaincógnita<0{\displaystyle y=\operatorname {truncate} (x)=\operatorname {sgn}(x)\left\lfloor |x|\right\rfloor =-\operatorname {sgn}(x)\left\lceil -|x|\right\rceil ={\begin{cases}\left\lfloor x\right\rfloor &x\geq 0\\[5mu]\left\lceil x\right\rceil &x<0\end{cases}}}

Por ejemplo, 23,7 se redondea a 23, y −23,7 se redondea a −23.

Redondeando desde cero

También se puede redondear alejándose de cero (o redondeando hacia el infinito ): y es el entero más cercano a 0 (o equivalentemente, a x ) tal que x está entre 0 e y (inclusive).

y=sgn(incógnita)|incógnita|=sgn(incógnita)|incógnita|={incógnitaincógnita0incógnitaincógnita<0{\displaystyle y=\operatorname {sgn}(x)\left\lceil |x|\right\rceil =-\operatorname {sgn}(x)\left\lfloor -|x|\right\rfloor ={\begin{cases}\left\lceil x\right\rceil &x\geq 0\\[5mu]\left\lfloor x\right\rfloor &x<0\end{cases}}}

Por ejemplo, 23,2 se redondea a 24, y −23,2 se redondea a −24.

Redondeo al entero más cercano

Estos seis métodos se denominan redondeo al entero más cercano . Redondear un número x al entero más cercano requiere alguna regla de desempate para aquellos casos en que x está exactamente a medio camino entre dos enteros, es decir, cuando la parte fraccionaria de x es exactamente 0,5.

Si no fuera por las partes fraccionarias de 0,5, los errores de redondeo introducidos por el método de redondeo al más cercano serían simétricos: por cada fracción que se redondea hacia abajo (como 0,268), hay una fracción complementaria (a saber, 0,732) que se redondea hacia arriba en la misma cantidad.

Al redondear un conjunto grande de números de punto fijo con partes fraccionarias distribuidas uniformemente , los errores de redondeo de todos los valores, con la excepción de aquellos con una parte fraccionaria de 0,5, se compensarían estadísticamente entre sí. Esto significa que el valor esperado (promedio) de los números redondeados es igual al valor esperado de los números originales cuando se eliminan del conjunto los números con una parte fraccionaria de 0,5.

En la práctica, se suelen utilizar números de coma flotante , que presentan aún más matices computacionales debido a que no están espaciados de manera uniforme.

Redondeando a la mitad

Se puede redondear la mitad hacia arriba (o hacia el infinito positivo ), una regla de desempate ampliamente utilizada en muchas disciplinas. Es decir, los valores medios de x siempre se redondean hacia arriba. Si la parte fraccionaria de x es exactamente 0,5, entonces y = x + 0,5.

y=incógnita+12=incógnita12=122incógnita{\displaystyle y=\left\lfloor x+{\tfrac {1}{2}}\right\rfloor =-\left\lceil -x-{\tfrac {1}{2}}\right\rceil =\left\lceil {\tfrac {1}{2}}\lfloor 2x\rfloor \right\rceil }

Por ejemplo, 23,5 se redondea a 24 y −23,5 se redondea a −23.

Some programming languages (such as Java and Python) use "half up" to refer to round half away from zero rather than round half toward positive infinity.[4][5]

This method only requires checking one digit to determine rounding direction in two's complement and similar representations.

Rounding half down

One may also round half down (or round half toward negative infinity) as opposed to the more common round half up. If the fractional part of x is exactly 0.5, then y = x − 0.5

y=x12=x+12=122x{\displaystyle y=\left\lceil x-{\tfrac {1}{2}}\right\rceil =-\left\lfloor -x+{\tfrac {1}{2}}\right\rfloor =\left\lfloor {\tfrac {1}{2}}\lceil 2x\rceil \right\rfloor }

For example, 23.5 gets rounded to 23, and −23.5 gets rounded to −24.

Some programming languages (such as Java and Python) use "half down" to refer to round half toward zero rather than round half toward negative infinity.[4][5]

Rounding half toward zero

One may also round half toward zero (or round half away from infinity) as opposed to the conventional round half away from zero. If the fractional part of x is exactly 0.5, then y = x − 0.5 if x is positive, and y = x + 0.5 if x is negative.

y=sgn(x)|x|12=sgn(x)|x|+12={x12=122xx0x+12=122xx<0{\displaystyle y=\operatorname {sgn}(x)\left\lceil |x|-{\tfrac {1}{2}}\right\rceil =-\operatorname {sgn}(x)\left\lfloor -|x|+{\tfrac {1}{2}}\right\rfloor ={\begin{cases}\left\lceil x-{\tfrac {1}{2}}\right\rceil =\left\lfloor {\tfrac {1}{2}}\lceil 2x\rceil \right\rfloor &x\geq 0\\[5mu]\left\lfloor x+{\tfrac {1}{2}}\right\rfloor =\left\lceil {\tfrac {1}{2}}\lfloor 2x\rfloor \right\rceil &x<0\end{cases}}}

For example, 23.5 gets rounded to 23, and −23.5 gets rounded to −23.

This method treats positive and negative values symmetrically, and therefore is free of overall positive/negative bias if the original numbers are positive or negative with equal probability. It does, however, still have bias toward zero.

Rounding half away from zero

One may also round half away from zero (or round half toward infinity), a tie-breaking rule that is commonly taught and used, namely: If the fractional part of x is exactly 0.5, then y = x + 0.5 if x is positive, and y = x − 0.5 if x is negative.

y=sgn(x)|x|+12=sgn(x)|x|12={x+12=122xx0x12=122xx<0{\displaystyle y=\operatorname {sgn}(x)\left\lfloor |x|+{\tfrac {1}{2}}\right\rfloor =-\operatorname {sgn}(x)\left\lceil -|x|-{\tfrac {1}{2}}\right\rceil ={\begin{cases}\left\lfloor x+{\tfrac {1}{2}}\right\rfloor =\left\lceil {\tfrac {1}{2}}\lfloor 2x\rfloor \right\rceil &x\geq 0\\[5mu]\left\lceil x-{\tfrac {1}{2}}\right\rceil =\left\lfloor {\tfrac {1}{2}}\lceil 2x\rceil \right\rfloor &x<0\end{cases}}}

For example, 23.5 gets rounded to 24, and −23.5 gets rounded to −24.

This can be more efficient on computers that use sign-magnitude representation for the values to be rounded, because only the first omitted digit needs to be considered to determine if it rounds up or down. This is one method used when rounding to significant figures due to its simplicity.

Este método, también conocido como redondeo comercial , trata los valores positivos y negativos de forma simétrica y, por lo tanto, está libre de sesgos positivos/negativos generales si los números originales son positivos o negativos con igual probabilidad. Sin embargo, aún presenta un sesgo que se aleja del cero.

Se utiliza con frecuencia para conversiones de divisas y redondeo de precios (cuando la cantidad se convierte primero a la subdivisión significativa más pequeña de la moneda, como los céntimos de euro), ya que es fácil de explicar considerando solo el primer dígito fraccionario, independientemente de los dígitos de precisión suplementarios o el signo de la cantidad (para una equivalencia estricta entre el pagador y el receptor de la cantidad).

Redondeando a la mitad para que sea par.

También se puede redondear la mitad al número par más cercano , una regla de desempate sin sesgo positivo/negativo y sin sesgo hacia/alejándose del cero. Según esta convención, si la parte fraccionaria de x es 0,5, entonces y es el entero par más cercano a x . Así, por ejemplo, 23,5 se convierte en 24, al igual que 24,5; sin embargo, −23,5 se convierte en −24, al igual que −24,5. Esta función minimiza el error esperado al sumar cifras redondeadas, independientemente de si las entradas son mayoritariamente positivas o mayoritariamente negativas, siempre que no sean mayoritariamente pares ni mayoritariamente impares.

Esta variante del método de redondeo al más cercano también se denomina redondeo convergente , redondeo estadístico , redondeo holandés , redondeo gaussiano , redondeo par-impar , [ 6 ] o redondeo bancario . [ 7 ]

Este es el modo de redondeo predeterminado que se utiliza en las operaciones IEEE 754 para resultados en formatos binarios de punto flotante.

Al eliminar el sesgo, la suma o resta repetida de números independientes, como en un paseo aleatorio unidimensional , dará un resultado redondeado con un error que tiende a crecer en proporción a la raíz cuadrada del número de operaciones, en lugar de linealmente.

Sin embargo, esta regla distorsiona la distribución al aumentar la probabilidad de los números pares en relación con los impares. Por eso, esta regla se aplica en situaciones donde la suma de los números es más importante que la distribución.

Redondeando la mitad a impar

También se puede redondear la mitad al número impar , una regla de desempate similar a la de redondear la mitad al número par. En este método, si la parte fraccionaria de x es 0,5, entonces y es el entero impar más cercano a x . Así, por ejemplo, 23,5 se convierte en 23, al igual que 22,5; mientras que −23,5 se convierte en −23, al igual que −22,5.

Este método también está libre de sesgos positivos/negativos y de sesgo hacia/alejándose del cero, siempre que los números que se van a redondear no sean mayoritariamente pares ni mayoritariamente impares. También comparte la propiedad de redondear a la mitad a la mitad de los números pares de distorsionar la distribución original, ya que aumenta la probabilidad de los impares en relación con los pares. Fue el método utilizado para los saldos bancarios en el Reino Unido cuando decimalizó su moneda [ 8 ] .

Esta variante casi nunca se usa en cálculos, excepto en situaciones donde se desea evitar aumentar la escala de los números de punto flotante, que tienen un rango de exponente limitado. Con redondeo a la mitad al número par , un número no infinito se redondearía al infinito, y un pequeño valor desnormalizado se redondearía a un valor normal distinto de cero. En efecto, este modo prefiere preservar la escala existente de los números de empate, evitando resultados fuera de rango cuando sea posible para sistemas numéricos de base par (como el binario y el decimal) .

Redondeo aleatorio a un número entero

Desempate alterno

Un método, menos conocido que la mayoría, consiste en alternar la dirección al redondear un número con una parte fraccionaria de 0,5. Todos los demás se redondean al entero más cercano. Siempre que la parte fraccionaria sea 0,5, se alterna el redondeo hacia arriba o hacia abajo: para la primera aparición de una parte fraccionaria de 0,5, se redondea hacia arriba; para la segunda, hacia abajo, y así sucesivamente. Alternativamente, el primer redondeo de la parte fraccionaria de 0,5 puede determinarse mediante una semilla aleatoria . "Arriba" y "abajo" pueden ser dos métodos de redondeo cualesquiera que se opongan entre sí: hacia y lejos del infinito positivo o hacia y lejos del cero.

Si las ocurrencias de fracciones de 0,5 se producen con una frecuencia significativamente mayor que la de reiniciar el conteo de ocurrencias, entonces el método está prácticamente libre de sesgos. Con un sesgo cero garantizado, resulta útil si se van a sumar o promediar los números.

Desempate aleatorio

Si la parte fraccionaria de x es 0,5, elige y al azar entre x + 0,5 y x − 0,5 , con igual probabilidad. Todos los demás valores se redondean al entero más cercano.

Al igual que la regla de redondeo a la mitad para valores pares e impares, esta regla está prácticamente libre de sesgos generales, pero también es justa entre valores de y pares e impares . Una ventaja sobre los métodos alternativos de desempate es que no es necesario recordar la última dirección de redondeo en la parte fraccionaria de 0,5.

Redondeo estocástico

El redondeo de la siguiente manera, a uno de los enteros más cercanos hacia el infinito negativo y al entero más cercano hacia el infinito positivo, con una probabilidad que depende de la proximidad, se denomina redondeo estocástico y dará un resultado insesgado en promedio. [ 9 ]

Redondo(incógnita)={incógnita con probabilidad 1(incógnitaincógnita)=incógnitaincógnita+1incógnita+1 con probabilidad incógnitaincógnita{\displaystyle \operatorname {Ronda} (x)={\begin{cases}\lfloor x\rfloor &{\text{ con probabilidad }}1-(x-\lfloor x\rfloor )=\lfloor x\rfloor -x+1\\[5mu]\lfloor x\rfloor +1&{\text{ con probabilidad }}{x-\lfloor x\rfloor }\end{cases}}}

For example, 1.6 would be rounded to 1 with probability 0.4 and to 2 with probability 0.6.

Stochastic rounding can be accurate in a way that a rounding function can never be. For example, suppose one started with 0 and added 0.3 to that one hundred times while rounding the running total between every addition. The result would be 0 with regular rounding, but with stochastic rounding, the expected result would be 30, which is the same value obtained without rounding. This can be useful in machine learning where the training may use low precision arithmetic iteratively.[9] Stochastic rounding is also a way to achieve 1-dimensional dithering.

Comparison of approaches for rounding to an integer

Rounding to other values

Rounding to a specified multiple

The most common type of rounding is to round to an integer; or, more generally, to an integer multiple of some increment – such as rounding to whole tenths of seconds, hundredths of a dollar, to whole multiples of 1/2 or 1/8 inch, to whole dozens or thousands, etc.

In general, rounding a number x to a multiple of some specified positive value m entails the following steps:

roundToMultiple(x,m)=round(x/m)×m{\displaystyle \mathrm {roundToMultiple} (x,m)=\mathrm {round} (x/m)\times m}

For example, rounding x = 2.1784 dollars to whole cents (i.e., to a multiple of 0.01) entails computing 2.1784 / 0.01 = 217.84, then rounding that to 218, and finally computing 218 × 0.01 = 2.18.

When rounding to a predetermined number of significant digits, the increment m depends on the magnitude of the number to be rounded (or of the rounded result).

The increment m is normally a finite fraction in whatever numeral system is used to represent the numbers. For display to humans, that usually means the decimal numeral system (that is, m is an integer times a power of 10, like 1/1000 or 25/100). For intermediate values stored in digital computers, it often means the binary numeral system (m is an integer times a power of 2).

La función abstracta de un solo argumento "round()", que devuelve un número entero a partir de un valor real arbitrario, tiene al menos una docena de definiciones concretas distintas que se presentan en la sección de redondeo a enteros . La función abstracta de dos argumentos "roundToMultiple()" se define formalmente aquí, pero en muchos casos se utiliza con el valor implícito m = 1 para el incremento y, por lo tanto, se reduce a la función abstracta equivalente de un solo argumento, que también tiene la misma docena de definiciones concretas distintas.

Redondeo logarítmico

Redondeo a una potencia específica

Redondear a una potencia específica es muy diferente de redondear a un múltiplo específico ; por ejemplo, en informática es común necesitar redondear un número a una potencia entera de 2. Los pasos, en general, para redondear un número positivo x a una potencia b distinta de 1 son:

ronortedToPAGowmir(incógnita,b)=bronorted(registrobincógnita),incógnita>0,b>0,b1{\displaystyle \mathrm {roundToPower} (x,b)=b^{\mathrm {round} (\log _{b}x)},x>0,b>0,b\neq 1}

Muchas de las advertencias aplicables al redondeo a un múltiplo también son aplicables al redondeo a una potencia.

En la escala cromática de doce tonos de la música, 3/2 se redondea a 2 7/12 (una quinta ), 4/3 se redondea a 2 5/12 (una cuarta ), 5/4 se redondea a 2 4/12 (una tercera mayor ), 6/5 se redondea a 2 3/12 (una tercera menor ) y 9/8 se redondea a 2 2/12 ( una tercera disminuida ) .

Redondeo a escala

Este tipo de redondeo, también llamado redondeo a escala logarítmica , es una variante del redondeo a una potencia específica . El redondeo a escala logarítmica se realiza calculando el logaritmo de la cantidad y redondeando al valor más cercano en la escala logarítmica.

Por ejemplo, las resistencias se suministran con valores preferidos en una escala logarítmica. En particular, para resistencias con una precisión del 10%, se suministran con valores nominales de 100, 120, 150, 180, 220, etc., redondeados a múltiplos de 10 ( serie E12 ). Si un cálculo indica que se requiere una resistencia de 165 ohmios, entonces log(150) = 2,176 , log(165) = 2,217 y log(180) = 2,255 . El logaritmo de 165 está más cerca del logaritmo de 180, por lo que una resistencia de 180 ohmios sería la primera opción si no hay otras consideraciones.

Whether a value x ∈ (a, b) rounds to a or b depends upon whether the squared value x2 is greater than or less than the product ab. The value 165 rounds to 180 in the resistors example because 1652 = 27225 is greater than 150 × 180 = 27000.

Floating-point rounding

In floating-point arithmetic, rounding aims to turn a given value x into a value y with a specified number of significant digits. In other words, y should be a multiple of a number m that depends on the magnitude of x. The number m is a power of the base (usually 2 or 10) of the floating-point representation.

Apart from this detail, all the variants of rounding discussed above apply to the rounding of floating-point numbers as well. The algorithm for such rounding is presented in the Scaled rounding section above, but with a constant scaling factor s = 1, and an integer base b > 1.

Where the rounded result would overflow the result for a directed rounding is either the appropriate signed infinity when "rounding away from zero", or the highest representable positive finite number (or the lowest representable negative finite number if x is negative), when "rounding toward zero". The result of an overflow for the usual case of round to nearest is always the appropriate infinity.

Rounding to a simple fraction

In some contexts it is desirable to round a given number x to a "neat" fraction – that is, the nearest fraction y = m/n whose numerator m and denominator n do not exceed a given maximum. This problem is fairly distinct from that of rounding a value to a fixed number of decimal or binary digits, or to a multiple of a given unit m. This problem is related to Farey sequences, the Stern–Brocot tree, and continued fractions.

Rounding to an available value

Finished lumber, writing paper, electronic components, and many other products are usually sold in only a few standard values.

Muchos procedimientos de diseño describen cómo calcular un valor aproximado y luego "redondearlo" a un tamaño estándar utilizando frases como "redondear hacia abajo al valor estándar más cercano", "redondear hacia arriba al valor estándar más cercano" o "redondear al valor estándar más cercano". [ 10 ] [ 11 ]

Cuando un conjunto de valores preferidos está igualmente espaciado en una escala logarítmica, elegir el valor preferido más cercano a cualquier valor dado puede considerarse una forma de redondeo escalado . Dichos valores redondeados pueden calcularse directamente. [ 12 ]

contenedores arbitrarios

Las reglas de redondeo más generales permiten separar valores en puntos de ruptura arbitrarios, como por ejemplo en la agrupación de datos . Una herramienta formalizada matemáticamente relacionada son las secuencias de señalización , que utilizan nociones de distancia distintas a la simple diferencia; por ejemplo, una secuencia puede redondearse al entero con el menor error relativo (porcentual).

El redondeo en otros contextos

Dilatación y difusión de errores

Al digitalizar señales continuas , como las ondas sonoras, el efecto global de varias mediciones es más importante que la precisión de cada medición individual. En estas circunstancias, se suelen utilizar el tramado y una técnica relacionada, la difusión de errores . Una técnica relacionada, denominada modulación por ancho de pulso, se utiliza para obtener una salida analógica de un dispositivo inercial mediante la aplicación rápida de pulsos de potencia con un ciclo de trabajo variable . La modulación delta-sigma se utiliza comúnmente para la conversión entre señales del mundo real y señales digitales, lo que permite controlar las estadísticas de frecuencia de la cuantificación .

La difusión de errores busca minimizar el error promedio. Al trabajar con una pendiente suave de uno a cero, el resultado será cero durante los primeros términos hasta que la suma del error y el valor actual sea mayor que 0,5. En ese caso, se genera un 1 y se resta la diferencia del error acumulado. El tramado de Floyd-Steinberg es un procedimiento popular de difusión de errores para la digitalización de imágenes.

As a one-dimensional example, suppose the numbers 0.9677, 0.9204, 0.7451, and 0.3091 occur in order and each is to be rounded to a multiple of 0.01. In this case the cumulative sums, 0.9677, 1.8881 = 0.9677 + 0.9204, 2.6332 = 0.9677 + 0.9204 + 0.7451, and 2.9423 = 0.9677 + 0.9204 + 0.7451 + 0.3091, are each rounded to a multiple of 0.01: 0.97, 1.89, 2.63, and 2.94. The first of these and the differences of adjacent values give the desired rounded values: 0.97, 0.92 = 1.89 − 0.97, 0.74 = 2.63 − 1.89, and 0.31 = 2.94 − 2.63.

Monte Carlo arithmetic

Monte Carlo arithmetic is a technique in Monte Carlo methods where the rounding is randomly up or down. Stochastic rounding can be used for Monte Carlo arithmetic, but in general, just rounding up or down with equal probability is more often used. Repeated runs will give a random distribution of results which can indicate the stability of the computation.[13]

Exact computation with rounded arithmetic

It is possible to use rounded arithmetic to evaluate the exact value of a function with integer domain and range. For example, if an integer n is known to be a perfect square, its square root can be computed by converting n to a floating-point value z, computing the approximate square root x of z with floating point, and then rounding x to the nearest integer y. If n is not too big, the floating-point round-off error in x will be less than 0.5, so the rounded value y will be the exact square root of n. This is essentially why slide rules could be used for exact arithmetic.

Double rounding

Rounding a number twice in succession to different levels of precision, with the latter precision being coarser, is not guaranteed to give the same result as rounding once to the final precision except in the case of directed rounding.[nb 2] For instance, rounding 9.46 to the nearest tenth gives 9.5, and then 10 when rounding to the nearest integer using rounding half to even, but would give 9 when rounded directly using the same method. Borman and Chatfield[14] discuss the implications of double rounding when comparing data rounded to one decimal place to specification limits expressed using integers.

In Martinez v. Allstate and Sendejo v. Farmers, litigated between 1995 and 1997, the insurance companies argued that double rounding premiums was permissible and in fact required. The US courts ruled against the insurance companies and ordered them to adopt rules to ensure single rounding.[15]

Some computer languages and the IEEE 754-2008 standard dictate that in straightforward calculations the result should not be rounded twice. This has been a particular problem with Java, as it is designed to be run identically on different machines; special programming tricks have had to be used to achieve this with x87 floating point.[16][17] The Java language was changed to allow different results where the difference does not matter and require a strictfp qualifier to be used when the results have to conform accurately; strict floating point was restored in Java 17.[18]

In some algorithms, an intermediate result is computed in a larger precision, then must be rounded to the final precision. Double rounding can be avoided by choosing an adequate rounding for the intermediate computation. This consists in avoiding to round to midpoints for the final rounding (except when the midpoint is exact). In binary arithmetic, the idea is to round the result toward zero, and set the least significant bit to 1 if the rounded result is inexact; this rounding is called sticky rounding.[19] Equivalently, it consists in returning the intermediate result when it is exactly representable, and the nearest floating-point number with an odd significand otherwise; this is why it is also known as rounding to odd.[20][21] A concrete implementation of this approach, for binary and decimal arithmetic, is implemented as Rounding to prepare for shorter precision.

Rounding to prepare for shorter precision

This rounding mode is used to avoid getting a potentially wrong result after multiple roundings. This can be achieved if all roundings except the final one are done using rounding to prepare for shorter precision ("RPSP"), and only the final rounding uses the externally requested mode.

With decimal arithmetic, final digits of 0 and 5 are avoided when the input is not representable exactly; if there is a choice between numbers with the least significant digit 0 or 1, 4 or 5, 5 or 6, 9 or 0, then the digit different from 0 or 5 shall be selected; otherwise, the choice is arbitrary. IBM defines that, in the latter case, a digit with the smaller magnitude shall be selected.[22][23] RPSP can be applied with the step between two consequent roundings as small as a single digit (for example, rounding to 1/10 can be applied after rounding to 1/100). For example, when rounding to integer,

  • 20.0 is rounded to 20;
  • 20.01, 20.1, 20.9, 20.99, 21, 21.01, 21.9, 21.99 are rounded to 21 (avoiding a final 0);
  • 22.0, 22.1, 22.9, 22.99 are rounded to 22;
  • 24.0, 24.1, 24.9, 24.99 are rounded to 24 (avoiding a final 5);
  • 25.0 is rounded to 25;
  • 25.01, 25.1 are rounded to 26 (avoiding a final 5).

In the example from "Double rounding" section, rounding 9.46 to one decimal gives 9.4, which rounding to integer in turn gives 9.

With binary arithmetic, this rounding is also called "round to odd" (not to be confused with "round half to odd"). For example, when rounding to 1/4 (0.01 in binary),

  • x = 2.0 ⇒ result is 2 (10.00 in binary)
  • 2.0 < x < 2.5 ⇒ result is 2.25 (10.01 in binary)
  • x = 2.5 ⇒ result is 2.5 (10.10 in binary)
  • 2.5 < x < 3.0 ⇒ result is 2.75 (10.11 in binary)
  • x = 3.0 ⇒ result is 3 (11.00 in binary)

For correct results with binary arithmetic, each rounding step must remove at least 2 binary digits, otherwise, wrong results may appear. For example,

  • 3.125 RPSP to 1/4 ⇒ result is 3.25
  • 3.25 RPSP to 1/2 ⇒ result is 3.5
  • 3.5 round-half-to-even to 1 ⇒ result is 4 (wrong)

If the erroneous middle step is removed, the final rounding to integer rounds 3.25 to the correct value of 3.

RPSP is implemented in hardware in IBM zSeries and pSeries. In Python module "Decimal", Tcl module "math", Haskell package "decimal-arithmetic", and possibly others, this mode is called ROUND_05UP or round05up.

Table-maker's dilemma

William M. Kahan acuñó el término "El dilema del fabricante de tablas" para referirse al costo desconocido de redondear funciones trascendentales :

Nadie sabe cuánto costaría calcular y w correctamente redondeado para cada par de argumentos de punto flotante en los que no se produzca desbordamiento. En cambio, las bibliotecas matemáticas de renombre calculan funciones trascendentales elementales en la mayoría de los casos con un margen ligeramente superior a la mitad de un ulp y casi siempre con un margen muy inferior a un ulp. ¿Por qué no se puede redondear y w con un margen inferior a la mitad de un ulp como la raíz cuadrada? Porque nadie sabe cuánto cálculo costaría... No existe una forma general de predecir cuántos dígitos adicionales se necesitarán para calcular una expresión trascendental y redondearla correctamente a un número preestablecido de dígitos. Incluso el hecho (de ser cierto) de que un número finito de dígitos adicionales sea suficiente en última instancia puede ser un teorema profundo. [ 24 ]

El estándar IEEE 754 para coma flotante garantiza que las operaciones de suma, resta, multiplicación, división, suma y multiplicación combinadas , raíz cuadrada y resto de coma flotante darán el resultado correctamente redondeado de la operación de precisión infinita. El estándar de 1985 no ofrecía tal garantía para funciones más complejas, que generalmente solo son precisas hasta el último bit como máximo. Sin embargo, el estándar de 2008 garantiza que las implementaciones conformes darán resultados correctamente redondeados que respeten el modo de redondeo activo; la implementación de las funciones, no obstante, es opcional.

Utilizando el teorema de Gelfond-Schneider y el teorema de Lindemann-Weierstrass , se puede demostrar que muchas de las funciones elementales estándar devuelven resultados trascendentales , excepto en algunos argumentos bien conocidos; por lo tanto, desde un punto de vista teórico, siempre es posible redondear correctamente dichas funciones. Sin embargo, para una implementación de una función de este tipo, determinar un límite para una precisión dada sobre cuán exactos deben calcularse los resultados, antes de que se pueda garantizar un resultado correctamente redondeado, puede requerir mucho tiempo de cálculo o puede ser inalcanzable. [ 25 ] En la práctica, cuando este límite no se conoce (o solo se conoce un límite muy grande), se debe tomar alguna decisión en la implementación (ver más adelante); pero según un modelo probabilístico, el redondeo correcto se puede satisfacer con una probabilidad muy alta cuando se utiliza una precisión intermedia de hasta el doble del número de dígitos del formato objetivo más una pequeña constante (después de tener en cuenta los casos especiales).

Algunos paquetes de programación ofrecen redondeo correcto. El paquete GNU MPFR proporciona resultados de precisión arbitraria con redondeo correcto. Otras bibliotecas implementan funciones elementales con redondeo correcto en precisión doble IEEE 754 (binary64):

  • La biblioteca ml4j de IBM , que significa Biblioteca Matemática para Java , escrita por Abraham Ziv y Moshe Olshansky en 1999, redondeaba correctamente solo al más cercano. [ 26 ] [ 27 ] Se afirmó que esta biblioteca era portátil, pero solo se proporcionaron binarios para PowerPC / AIX , SPARC / Solaris y x86 / Windows NT . Según su documentación, esta biblioteca utiliza un primer paso con una precisión un poco mayor que la doble precisión, un segundo paso basado en aritmética doble-doble y un tercer paso con una precisión de 768 bits basado en matrices de números de punto flotante de doble precisión IEEE 754.
  • La biblioteca matemática portátil Accurate de IBM (abreviada como APMathLib o simplemente MathLib), [ 28 ] [ 29 ] también llamada libultim, [ 30 ] solo redondea al más cercano. Esta biblioteca utiliza hasta 768 bits de precisión de trabajo. Se incluyó en la biblioteca C de GNU en 2001, [ 31 ] pero las "rutas lentas" (que proporcionan un redondeo correcto) se eliminaron entre 2018 y 2021.
  • CRlibm, escrito en el antiguo equipo de Arénaire (LIP, ENS Lyon ), se distribuyó por primera vez en 2003. [ 32 ] Admite los 4 modos de redondeo y se demuestra utilizando el conocimiento de los casos más difíciles de redondear. [ 33 ] [ 34 ] Más eficiente que IBM MathLib. [ 35 ] Sucedido por Metalibm (2014), que automatiza las demostraciones formales. [ 36 ]
  • La biblioteca libmcr de Sun Microsystems de 2004, en los 4 modos de redondeo. [ 37 ] [ 38 ] Para los casos difíciles, esta biblioteca también utiliza precisión múltiple, y el número de palabras aumenta en 2 cada vez que se produce el dilema del creador de tablas (con comportamiento indefinido en el caso muy improbable de que se alcance algún límite de la máquina).
  • El proyecto CORE-MATH (2022) proporciona algunas funciones correctamente redondeadas en los 4 modos de redondeo para procesadores x86-64 . Demostrado utilizando el conocimiento de los casos más difíciles de redondear. [ 39 ] [ 35 ]
  • LLVM libc proporciona algunas funciones correctamente redondeadas en los 4 modos de redondeo. [ 40 ]

Existen números computables para los cuales nunca se puede determinar un valor redondeado, independientemente de la cantidad de dígitos que se calculen. No se pueden dar ejemplos específicos, pero esto se deduce de la indecidibilidad del problema de la parada . Por ejemplo, si la conjetura de Goldbach es verdadera pero indemostrable , entonces el resultado de redondear el siguiente valor, n , al entero más cercano no se puede determinar: o bien n = 1 + 10 k, donde k es el primer número par mayor que 4 que no es la suma de dos números primos, o bien n = 1 si no existe tal número. El resultado redondeado es 2 si existe tal número k y 1 en caso contrario. Sin embargo, el valor antes del redondeo se puede aproximar con cualquier precisión dada, incluso si la conjetura es indemostrable.

Interacción con búsquedas de cadenas

El redondeo puede afectar negativamente la búsqueda de un número mediante cadenas de texto. Por ejemplo, π redondeado a cuatro dígitos es "3.1416", pero una búsqueda simple de esta cadena no encontrará "3.14159" ni ningún otro valor de π redondeado a más de cuatro dígitos. En cambio, la truncación no presenta este problema; por ejemplo, una búsqueda simple de la cadena "3.1415", que es π truncado a cuatro dígitos, sí encontrará valores de π truncados a más de cuatro dígitos.

Historia

El concepto de redondeo es muy antiguo, quizás incluso más antiguo que el concepto de división. Algunas tablillas de arcilla antiguas encontradas en Mesopotamia contienen tablas con valores redondeados de recíprocos y raíces cuadradas en base 60. [ 41 ] Las aproximaciones redondeadas de π , la duración del año y la duración del mes también son antiguas; véanse los ejemplos en base 60 .

El método de redondeo a la mitad más cercano ha servido como norma estadounidense Z25.1 y norma ASTM E-29 desde 1940. [ 42 ] El origen de los términos redondeo imparcial y redondeo estadístico es bastante autoexplicativo. En la cuarta edición de 1906 de Probabilidad y Teoría de los Errores, Robert Simpson Woodward lo llamó "la regla de la computadora", [ 43 ] lo que indica que entonces era de uso común entre los computadores humanos que calculaban tablas matemáticas. Por ejemplo, se recomendó en el libro de Simon Newcomb de c. 1882 Tablas Logarítmicas y Otras Tablas Matemáticas . [ 44 ] La Teoría de las Mediciones de Lucius Tuttle de 1916 lo llamó una "regla universalmente adoptada" para registrar mediciones físicas. [ 45 ] Churchill Eisenhart indicó que la práctica ya estaba "bien establecida" en el análisis de datos en la década de 1940. [ 46 ]

El origen del término «redondeo bancario» sigue siendo más bien incierto. Si este método de redondeo fue alguna vez un estándar en la banca, la evidencia ha resultado extremadamente difícil de encontrar. Por el contrario, la sección 2 del informe de la Comisión Europea « La introducción del euro y el redondeo de las cantidades monetarias » [ 47 ] sugiere que anteriormente no existía un enfoque estándar para el redondeo en la banca; y especifica que las cantidades «a medio camino» deben redondearse al alza.

Hasta la década de 1980, el método de redondeo utilizado en la aritmética de punto flotante solía estar predeterminado por el hardware, mal documentado, inconsistente y diferente para cada marca y modelo de computadora. Esta situación cambió tras la adopción del estándar de punto flotante IEEE 754 por la mayoría de los fabricantes de computadoras. Dicho estándar permite al usuario elegir entre varios modos de redondeo y, en cada caso, especifica con precisión cómo deben redondearse los resultados. Estas características hicieron que los cálculos numéricos fueran más predecibles e independientes de la máquina, y posibilitaron la implementación eficiente y consistente de la aritmética de intervalos .

Actualmente, gran parte de la investigación tiende a redondear a múltiplos de 5 o 2. Por ejemplo, Jörg Baten utilizó el método de acumulación de edades en muchos estudios para evaluar el nivel de alfabetización numérica de poblaciones antiguas. Creó el Índice ABCC , que permite comparar la alfabetización numérica entre regiones sin necesidad de fuentes históricas que midieran la alfabetización de la población. [ 48 ]

Funciones de redondeo en lenguajes de programación

La mayoría de los lenguajes de programación ofrecen funciones o sintaxis especial para redondear números fraccionarios de diversas maneras. Los primeros lenguajes numéricos, como Fortran y C , solo ofrecían un método, generalmente el truncamiento (hacia cero). Este método predeterminado podía inferirse en ciertos contextos, como al asignar un número fraccionario a una variable entera o al usar un número fraccionario como índice de un array . Otros tipos de redondeo debían programarse explícitamente; por ejemplo, redondear un número positivo al entero más cercano podía implementarse sumando 0,5 y truncando.

En las últimas décadas, sin embargo, la sintaxis y las bibliotecas estándar de la mayoría de los lenguajes han proporcionado comúnmente al menos las cuatro funciones básicas de redondeo (hacia arriba, hacia abajo, al más cercano y hacia cero). El método de desempate puede variar según el lenguaje y la versión, o puede ser seleccionable por el programador. Varios lenguajes siguen el estándar de punto flotante IEEE 754 y definen estas funciones como tomando un argumento de punto flotante de doble precisión y devolviendo el resultado del mismo tipo, que luego puede convertirse a un entero si es necesario. Este enfoque puede evitar desbordamientos espurios porque los tipos de punto flotante tienen un rango mayor que los tipos enteros. Algunos lenguajes, como PHP , proporcionan funciones que redondean un valor a un número especificado de dígitos decimales (por ejemplo, de 4321.5678 a 4321.57 o 4300). Además, muchos lenguajes proporcionan una función printf o similar de formato de cadena, que permite convertir un número fraccionario a una cadena, redondeado a un número de lugares decimales especificado por el usuario (la precisión ). Por otro lado, el truncamiento (redondeo a cero) sigue siendo el método de redondeo predeterminado utilizado por muchos lenguajes, especialmente para la división de dos valores enteros.

Por el contrario, CSS y SVG no definen ninguna precisión máxima específica para los números y las medidas, que tratan y exponen en su DOM y en su interfaz IDL como cadenas como si tuvieran precisión infinita , y no discriminan entre enteros y valores de punto flotante; sin embargo, las implementaciones de estos lenguajes normalmente convertirán estos números en valores de punto flotante de doble precisión IEEE 754 antes de exponer los dígitos calculados con una precisión limitada (en particular dentro de los enlaces de interfaz estándar de JavaScript o ECMAScript [ 49 ] .

Otros estándares de redondeo

Algunas disciplinas o instituciones han emitido normas o directrices para el redondeo de las consultas.

observaciones meteorológicas de EE. UU.

En una directriz publicada a mediados de 1966, [ 50 ] la Oficina del Coordinador Federal de Meteorología de EE. UU. determinó que los datos meteorológicos debían redondearse al número entero más cercano , con la regla de desempate de "redondear a la mitad hacia arriba". Por ejemplo, 1,5 redondeado a un entero debería convertirse en 2, y -1,5 debería convertirse en -1. Antes de esa fecha, la regla de desempate era "redondear a la mitad alejándose de cero".

Cero negativo en meteorología

Algunos meteorólogos pueden escribir "−0" para indicar una temperatura entre 0,0 y −0,5 grados (excluyendo ambos extremos) redondeada a un número entero. Esta notación se utiliza cuando el signo negativo se considera importante, por pequeña que sea la magnitud; por ejemplo, al redondear temperaturas en la escala Celsius , donde bajo cero indica congelación.

Cero negativo en el cálculo

Algunas representaciones informáticas de números, incluida la representación de punto flotante , distinguen entre 0 (también conocido como +0 ) y −0 . Para estas, el redondeo que habría sido a 0 desde un número negativo puede redondearse a −0 en lugar de a +0 .

Véase también

Notas

  1. Esto es necesario, por ejemplo, [1] para el reparto de plazas , implementado, por ejemplo, mediante el método del resto mayor (véase Matemáticas del reparto ), y [2] para distribuir el IVA total de una factura entre sus partidas.
  2. Un caso en el que el doble redondeo siempre conduce al mismo valor que el redondeo directo a la precisión final es cuando la base es impar.

Referencias

  1. Isaiah Lankham, Bruno Nachtergaele , Anne Schilling : Álgebra lineal como introducción a las matemáticas abstractas. World Scientific, Singapur 2016, ISBN 978-981-4730-35-8, pág. 186.
  2. Kulisch, Ulrich W. (julio de 1977). "Fundamentos matemáticos de la aritmética computacional". IEEE Transactions on Computers . C-26 (7): 610– 621. Bibcode : 1977ITCmp.100..610K . doi : 10.1109/TC.1977.1674893 .
  3. Higham, Nicholas John (2002). Precisión y estabilidad de los algoritmos numéricos (2.ª ed.). p. 54. doi : 10.1137/1.9780898718027.ch2 . ISBN   978-0-89871-521-7.
    Nievergelt, Yves (2000). "Errores de redondeo que hacen caer tus acciones". Mathematics Magazine . 73 (1): 47– 48. doi : 10.1080/0025570X.2000.11996800 . JSTOR 2691491 . 
    Quinn, Kevin (8 de noviembre de 1983). "¿Alguna vez ha tenido problemas para redondear cifras? Esta bolsa de valores sí" (PDF) . Wall Street Journal .
    Lilley, Wayne (29 de noviembre de 1983). "El índice bursátil de Vancouver por fin tiene el número correcto" (PDF) . The Toronto Star .
  4. 1 2 "java.math.RoundingMode" . Oracle.
  5. 1 2 "decimal – Aritmética de punto fijo y punto flotante decimal" . Python Software Foundation.
  6. Manual de Normas de Dibujo Técnico (NASA), X-673-64-1F, pág. 90
  7. ↑ Abbs, Brian ; Barker, Chris; Freebairn, Ingrid (2003). Postcards 4 Language Booster: Workbook with Grammar Builder . Pearson Education. p. 85. ISBN  0-13-093904-8El redondeo al número par más cercano también se denomina "redondeo bancario" porque los bancos también utilizan esta técnica.
    Guía del usuario del compilador Microsoft Pascal para el sistema operativo MS-DOS . Microsoft Corporation. 1985. pág.  165. El redondeo bancario se utiliza al truncar números reales que terminan en .5; es decir, los números impares se redondean al entero par más cercano y los números pares se redondean al entero par más cercano.
  8. Anexo 1 de la Ley de Moneda Decimal de 1969
  9. ^ Gupta , Suyog; Angrawl, Ankur; Gopalakrishnan, Kailash; Narayanan, pritish (9 de febrero de 2016). "Aprendizaje profundo con precisión numérica limitada". pag. 3. arXiv : 1502.02551 [ cs.LG ]. 
  10. "Reguladores de voltaje con diodo Zener" (PDF) . Archivado (PDF) del original el 13 de julio de 2011. Consultado el 24 de noviembre de 2010 .
  11. "Stellafane ATM: Construye un probador Foucault & Ronchi Página 3" . stellafane.org . Consultado el 10 de septiembre de 2025 .
  12. Schneider, Christine (2002-01-21). "Fórmula de Excel que calcula valores de resistencia estándar del 1%" . Diseño electrónico . Recuperado el 2025-09-10 .
  13. Parker, D. Stott; Eggert, Paul R.; Pierce, Brad (28 de marzo de 2000). "Aritmética de Monte Carlo: un marco para el análisis estadístico de errores de redondeo" . IEEE Computation in Science and Engineering.
  14. Borman, Phil; Chatfield, Marion (10 de noviembre de 2015). "Evite los peligros de usar datos redondeados". Journal of Pharmaceutical and Biomedical Analysis . 115 : 506–507 . doi : 10.1016/j.jpba.2015.07.021 . PMID 26299526 . 
  15. Deborah R. Hensler (2000). Dilemas de las demandas colectivas: Perseguir objetivos públicos para beneficio privado . RAND. págs. 255–293 . ISBN  0-8330-2601-1.
  16. Samuel A. Figueroa (julio de 1995). "¿Cuándo es inocuo el doble redondeo?" . Boletín informativo ACM SIGNUM . 30 (3). ACM: 21– 25. doi : 10.1145/221332.221334 .
  17. Roger Golliver (octubre de 1998). "Producción eficiente de resultados dobles ortogonales predeterminados IEEE utilizando hardware IEEE extendido" (PDF) . Intel.
  18. Darcy, Joseph D. "JEP 306: Restaurar la semántica de punto flotante siempre estricta" . Consultado el 12 de septiembre de 2021 .
  19. Moore, J. Strother; Lynch, Tom; Kaufmann, Matt (1996). "Una prueba verificada mecánicamente de la corrección del núcleo del algoritmo de división de punto flotante AMD5K86" ( PDF) . IEEE Transactions on Computers . 47. CiteSeerX 10.1.1.43.3309 . doi : 10.1109/12.713311 . Recuperado el 2 de agosto de 2016 . 
  20. Boldo, Sylvie ; Melquiond, Guillaume (2008). "Emulación de un FMA y sumas correctamente redondeadas: algoritmos probados que utilizan redondeo a impar" . IEEE Transactions on Computers . 57 (4): 462–471 . doi : 10.1109/TC.2007.70819 .
  21. "21718 – el redondeo de real.c no es perfecto" . gcc.gnu.org .
  22. "Operaciones aritméticas" . ibm.com . IBM. 8 de abril de 2025. Consultado el 12 de enero de 2026 .
  23. "z/Architecture Principles of Operation, Eleventh Edition" (PDF) . publibfi.boulder.ibm.com . págs . 9-14 . 
  24. Kahan, William Morton . "Un logaritmo demasiado ingenioso" . Consultado el 14 de noviembre de 2008 .
  25. ^ Müller, Jean-Michel; Brisebarre, Nicolás; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vicente; Melquiond, Guillaume; Revol, Nathalie ; Stehlé, Damián; Torres, Serge (2010). "Capítulo 12: Resolver el dilema del fabricante de mesas" . Manual de aritmética de coma flotante (1 ed.). Birkhäuser . doi : 10.1007/978-0-8176-4705-6 . ISBN  978-0-8176-4704-9. LCCN 2009939668 . 
  26. "NA Digest Domingo, 18 de abril de 1999 Volumen 99 : Número 16" . 18 de abril de 1999. Consultado el 29 de agosto de 2022 . 
  27. "Biblioteca matemática para Java" . Archivado del original el 8 de mayo de 1999.
  28. "Biblioteca matemática portátil precisa" . Archivado del original el 7 de febrero de 2005.
  29. mathlib en GitHub .
  30. "libultim – la biblioteca definitiva de funciones elementales con redondeo correcto" . Archivado del original el 1 de marzo de 2021.
  31. "Git - glibc.git/commit" . Sourceware.org . Consultado el 18 de julio de 2022 .
  32. de Dinechin, Florent; Lauter, Christoph; Muller, Jean-Michel (enero-marzo de 2007). "Logaritmos rápidos y correctamente redondeados en doble precisión". RAIRO-Theor. Inf. Appl . 41 (1): 85– 102. CiteSeerX 10.1.1.106.6652 . doi : 10.1051/ita:2007003 . HAL ensl-00000007v2 .  
  33. "CRlibm – Biblioteca matemática con redondeo correcto" . Archivado del original el 27/10/2016.
  34. crlibm en GitHub
  35. 1 2 Sibidanov, Alexei; Zimmermann, Paul; Glondu, Stéphane (2022). El proyecto CORE-MATH . 29º Simposio IEEE sobre Aritmética Computacional (ARITH 2022) . Recuperado el 30 de agosto de 2022 .
  36. Kupriianova, Olga; Lauter, Christoph (2014). Metalibm: Un generador de código de funciones matemáticas . Mathematical Software – ICMS 2014. Vol. 8592. pp. 713– 717. doi : 10.1007/978-3-662-44199-2_106 .  
  37. "libmcr – biblioteca de funciones elementales con redondeo correcto" . Archivado del original el 25 de febrero de 2021.
  38. libmcr en GitHub .
  39. "El proyecto CORE-MATH" . Consultado el 30 de agosto de 2022 .
  40. "Funciones matemáticas: la biblioteca C de LLVM" . libc.llvm.org .
  41. Duncan J. Melville. "Tablilla de arcilla YBC 7289". 2006
  42. Reglas para el redondeo de valores numéricos . Asociación Estadounidense de Estándares . 1940. Z25.1-1940.
    La norma surgió de un comité de la ASA que trabajaba para estandarizar la conversión de pulgadas a milímetros. Véase: Agnew, PG (septiembre de 1940). «El amor del hombre por los números redondos» . Industrial Standardization and Commercial Standards Monthly . Vol. 11, n.º 9, págs. 230-233 .   
    El estándar también se publicitó de forma más concisa en: "Redondeo de decimales" . Power . Vol. 84, n.º 11. Noviembre de 1940. pág. 93.   
    Práctica estándar para el uso de cifras significativas en datos de prueba para determinar la conformidad con las especificaciones . ASTM. 2013 [1940]. doi : 10.1520/E0029-13 . E-29.
  43. Woodward, Robert S. (1906). Probabilidad y teoría de errores . Monografías matemáticas. Vol. 7. Nueva York: J. Wiley & Son. pág. 42. Un hecho importante con respecto al error 1/2 para n par es que su signo es arbitrario, o no está fijado por el cálculo como ocurre con todos los demás errores. Sin embargo, la regla del ordenador, que hace que la última cifra redondeada de un valor interpolado sea par cuando se debe descartar media unidad, hará, a la larga, que este error sea tan a menudo positivo como negativo.  
  44. Newcomb, Simon (1882). Tablas logarítmicas y otras tablas matemáticas con ejemplos de su uso y sugerencias sobre el arte del cálculo . Nueva York: Henry Holt. págs. 14–15 . Aquí tenemos un caso en el que se requiere la mitad de un número impar. [...] Una buena regla para adoptar en tal caso es escribir el número par más cercano . 
  45. Tuttle, Lucius (1916). La teoría de las mediciones . Filadelfia: Laboratorio de Física Jefferson. pág. 29. Una fracción perceptiblemente menor que la mitad debe descartarse y más de la mitad siempre debe considerarse como una unidad más, pero cuando no se sabe con certeza cuál es la cifra más cercana, la regla universalmente adoptada es registrar el número par más cercano en lugar del número impar que está igualmente cerca. La razón de este procedimiento es que en una serie de varias mediciones de la misma cantidad será tan probable hacer un registro demasiado grande como demasiado pequeño, y por lo tanto en el promedio de varios de esos valores causará solo un pequeño error, si es que lo hay. 
  46. Churchill Eisenhart (1947). «Efectos del redondeo o la agrupación de datos» . En Eisenhart; Hastay; Wallis (eds.). Técnicas selectas de análisis estadístico para la investigación científica e industrial, y la ingeniería de producción y gestión . Nueva York: McGraw-Hill. págs. 187–223 . Consultado el 30 de enero de 2014 . 
  47. "La introducción del euro y el redondeo de las cantidades monetarias" (PDF) . Archivado (PDF) del original el 9 de octubre de 2010. Consultado el 19 de agosto de 2011 .
  48. Baten, Jörg (2009). "Cuantificando la alfabetización cuantitativa: acumulación de edades y la historia del capital humano". Journal of Economic History . 69 (3): 783– 808. doi : 10.1017/S0022050709001120 . hdl : 10230/481 .
  49. "ECMA-262 Especificación del lenguaje ECMAScript" (PDF) . ecma-international.org .
  50. OFCM, 2005: Manual Meteorológico Federal N.° 1 Archivado el 20 de abril de 1999 en Wayback Machine , Washington, DC., 104 págs.
  • Weisstein, Eric W. "Redondeo" . MathWorld .
  • Una introducción a diferentes algoritmos de redondeo , accesible a un público general pero especialmente útil para quienes estudian informática y electrónica.
  • Cómo implementar procedimientos de redondeo personalizados de Microsoft (fallido)
Obtenido de " https://en.wikipedia.org/w/index.php?title=Rounding&oldid=1361977097 "