[R-br] Casas Decimais

salah salah3.1416 em gmail.com
Sexta Abril 22 15:14:26 BRT 2016


Olá

Como os colegas já colocaram a conversão do número binário para um 
número real não é trivial.
Se você pretende trabalhar com alta precisão numérica  você precisa 
estudar o deus da informática - ponto flutuante - (/floating point)./

sugiro a leitura:

https://en.wikipedia.org/wiki/Floating_point

https://pt.wikipedia.org/wiki/Ponto_flutuante

http://www.burns-stat.com/pages/Tutor/R_inferno.pdf

O R sempre trabalha com o 22 dígitos, a função options(digits = ) 
controla o número de dígitos que será visualizado.
A precisão está em 16 dígitos

Verifique:

options(digits = 22)
#options(digits = 16)

(x1 = 10^-324)
(x2 = 10^-323)
(y1 = 10^+308)
(y2 = 10^+309)

(n17 = 0.00000000000000001)
(n16 = 1.0000000000000001)
(n15 = 1.000000000000001)
(n14 = 1.00000000000001)
(n13 = 1.0000000000001)
(n12 = 1.000000000001)
(n11 = 1.00000000001)
(n10 = 1.0000000001)
(n09 = 1.000000001)
(n08 = 1.00000001)
(n07 = 1.0000001)
(n06 = 1.000001)
(n05 = 1.00001)
(n04 = 1.0001)
(n03 = 1.001)
(n02 = 1.01)
(n01 = 1.1)
(n00 = 1)

n16 + n17
n15 + n16
n14 + n15

(n14 + n15) == 2.00000000000001110223
(n14 + n15) == 2.0000000000000111
(n14 + n15) == 2.000000000000011
(n14 + n15) == 2.00000000000001

0 == n17
1 == n16
1 == n15

.1
.2
.1 + .2
.3
.1 + .2 == .3

bons estudos!

Em 22/04/2016 08:19, Rodrigo Coster escreveu:
> Contribuindo com a resposta do Jobenil, isso acontece porque a 
> representação do teu número em binário é uma dizima periódica (agora 
> não tenho certeza se é só dizima ou dizima periódica) - isso é: tem 
> infinitas casas decimais. Por não ter como armazenar as infinitas 
> casas, ele é arredondado e por isso esse 'resíduo'. Embora parece algo 
> que possa ser ignorado, devemos nos preocupar com esses casos, como 
> mostra o exemplo:
>
> > .1 + .2
> [1] 0.3
> > .1 + .2 == .3
> [1] FALSE
>
>
>
> 2016-04-22 8:11 GMT-03:00 Jobenil Luiz Magalhães Júnior 
> <pjobenil em gmail.com <mailto:pjobenil em gmail.com>>:
>
>     Bom dia Júlio,
>     Acho que é devido ao processo de conversão interna de decimal para
>     binário e vice versa. Como você exige que a representação dos
>     números tenham 22 dígitos na reconversão de P para decimal ele
>     retorna essa precisão.
>     Teste outro número por exemplo 665.5, penso que não encontrará
>     este problema pois sua representava binária será exata.
>
>     Atenciosamente
>     Jobenil Junior
>
>
>     Enviado do meu iPad
>
>     > Em 21 de abr de 2016, às 19:35, julio cesar oliveira
>     <oliveirajc em ufv.br <mailto:oliveirajc em ufv.br>> escreveu:
>     >
>     > Colegas,
>     >
>     > Sou novato no R, e por isso gostaria da ajuda para esclarecer
>     algumas dúvidas.
>     >
>     > Preciso que os cálculos sejam realizados com máxima precisão em
>     relação ao número de casas decimais. Por isso tenho a seguinte dúvida:
>     >
>     > 1) Como configurar as casas decimais no R ?
>     >
>     > estou usando o comando    options(digits=22) para apresentar os
>     dados com 22 casas. Além dele posso trabalhar com o pacote (Rmpfr)
>     >
>     > exemplo
>     >
>     > > mpfr(665.598,128)
>     > 1 'mpfr' number of precision  128   bits
>     > [1] 665.5979999999999563442543148994445800781
>     >
>     > 2) por que aparece um resíduo? por exemplo
>     >
>     >  p<- 665.598
>     > > p
>     > [1] 665.5979999999999563443
>     >
>     > Grato
>     >
>     > julio
>     > _______________________________________________
>     > R-br mailing list
>     > R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
>     > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>     > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>     forneça código mínimo reproduzível.
>     _______________________________________________
>     R-br mailing list
>     R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
>     https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>     Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>     fornea cdigo mnimo reproduzvel.
>
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160422/de5555f0/attachment.html>


Mais detalhes sobre a lista de discussão R-br