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@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@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@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@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@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.