[R-es] Fwd: ¿Qué hace round exactamente?

Carlos J. Gil Bellosta gilbellosta en gmail.com
Jue Dic 10 20:19:30 CET 2009


Bueno, ?round dice:

     Note that for rounding off a 5, the IEC 60559 standard is expected
     to be used, ‘_go to the even digit_’.  Therefore
     ‘round(0.5)’ is ‘0’ and ‘round(-1.5)’ is ‘-2’.
     However, this is dependent on OS services and on representation
     error (since e.g. ‘0.15’ is not represented exactly, the
     rounding rule applies to the represented number and not to the
     printed number, and so ‘round(0.15, 1)’ could be either
     ‘0.1’ or ‘0.2’).

Así que, en realidad, "round" no hace nada distinto de lo que anuncia
en su documentación.

Un saludo,

Carlos J. Gil Bellosta

El día 10 de diciembre de 2009 19:57, Hernan Olivera
<lholivera en gmail.com> escribió:
> ---------- Mensaje reenviado ----------
> De: Hernan Olivera <lholivera en gmail.com>
> Fecha: 10 de diciembre de 2009 15:56
> Asunto: Re: [R-es] ¿Qué hace round exactamente?
> Para: "Carlos J. Gil Bellosta" <gilbellosta en gmail.com>
>
>
> El día 10 de diciembre de 2009 15:38, Carlos J. Gil Bellosta
> <gilbellosta en gmail.com> escribió:
>> No es R ni round. Pasa siempre que utilizas máquinas de precisión
>> finita. Dice la Wikipedia:
>>
>> De esta forma, con un número dado de dígitos representativos se
>> obtiene mayor precisión que con la coma fija, debido a que el valor de
>> estos dígitos es siempre significativo sea el que sea el orden de
>> magnitud del número a representar. Debido a esta adaptación, permite
>> representar un rango mucho mayor de números (determinado por los
>> valores límite que puede tomar el exponente).
>>
>> La "precisión" a la que se almacena x tiene que ver con el tamaño de
>> x. Si a x le restas x-epsilon y epsilon es como de costumbre, el
>> resultado, epsilon, tendrá un error grande.
>>
>> Un saludo,
>>
>> Carlos J. Gil Bellosta
>> http://www.datanalytics.com
>>
>>
>> El día 10 de diciembre de 2009 18:34, Usuario R
>> <r.user.spain en gmail.com> escribió:
>>> Hola,
>>>
>>> Alguien entiende porqué se redondea esto asi:
>>>
>>>  round( 20.435, 2 )
>>> [1] 20.43
>>>
>>> Y sin embargo:
>>>
>>>  round( 40.435, 2 )
>>> [1] 40.44
>>>
>>> Gracias!
>>>
>>> Patricia
>>>
>>>        [[alternative HTML version deleted]]
>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> De todos modos no parece haber justificación en la cantidad de bits
> significativos de la representacion entre 40.435 y 20.435. En verdad
> es un resultado extraño, no esperable, y no debería suceder.
> Justamente se supone que la definición de round deberia ayudar a
> definir bien estos resultados. Habría que indagar en la representación
> interna de los datos en R, la definición de round en R, etc. para dar
> una respuesta correcta.
>
> saludos
>
> --
> Hernan Olivera
>
>
>
> --
> Hernan Olivera
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



Más información sobre la lista de distribución R-help-es