Matemática de ponto flutuante

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Matemática de ponto flutuante

Breno Ramalho Lemes
A pergunta é simples, mas para pesquisar no Google preciso de uma
palavra-chave e não sei qual seria para o caso. Porque acontece o
seguinte?

> print(12.7 - 20 + 7.3)
-8.8817841970013e-16

> print(string.format("%f", 12.7 - 20 + 7.3))
-0.000000

> print(string.format("%f", 12.7 - 20 + 7.3) + 0)
0

E além do truque com string.format há outra forma de obter o zero
redondo que eu esperava?

--
Lua BR - http://groups.google.com/group/lua-br
Reply | Threaded
Open this post in threaded view
|

Re: Matemática de ponto flutuante

Luiz Henrique de Figueiredo
> > print(12.7 - 20 + 7.3)
> -8.8817841970013e-16

A razão é que 12.7 e 7.3 não são representados exatamente em ponto flutuante.
Leia mais em
        http://lua-users.org/wiki/FloatingPoint
        http://docs.python.org/tutorial/floatingpoint.html

--
Lua BR - http://groups.google.com/group/lua-br
Reply | Threaded
Open this post in threaded view
|

Re: Matemática de ponto flutuante

Roberto Ierusalimschy
In reply to this post by Breno Ramalho Lemes
> A pergunta é simples, mas para pesquisar no Google preciso de uma
> palavra-chave e não sei qual seria para o caso.

google math floating point

Para mim, o segundo item na lista é esse:

  What Every Programmer Should Know About Floating-Point Arithmetic
  http://floating-point-gui.de/

-- Roberto

--
Lua BR - http://groups.google.com/group/lua-br
Reply | Threaded
Open this post in threaded view
|

Re: Matemática de ponto flutuante

Breno Ramalho Lemes
On 11 set, 08:01, Roberto Ierusalimschy <[hidden email]>
wrote:
>
> google math floating point
>
> Para mim, o segundo item na lista esse:
>
>   What Every Programmer Should Know About Floating-Point Arithmetic
>  http://floating-point-gui.de/
>
> -- Roberto

Para mim deu o primeiro da lista, mas eu não sabia exatamente pelo que
procurava, talvez se eu visse não ia enxergar :D

O link do Luiz para o tutorial do Python foi perfeitamente no detalhe
da dúvida.

Sabendo pelo que pesquisar, o truque com string.format parece ser um
método popular para arredondar os valores: http://lua-users.org/wiki/SimpleRound

Obrigado a ambos.

--
Lua BR - http://groups.google.com/group/lua-br