Re: [HACKERS] 123.45 - 123 = 0.45

Поиск
Список
Период
Сортировка
От David Hartwig
Тема Re: [HACKERS] 123.45 - 123 = 0.45
Дата
Msg-id 36767DBD.129AAA1F@insightdist.com
обсуждение исходный текст
Ответ на Re: [HACKERS] 123.45 - 123 = 0.45  (Bruce Momjian <maillist@candle.pha.pa.us>)
Ответы Re: [HACKERS] 123.45 - 123 = 0.45  (Bruce Momjian <maillist@candle.pha.pa.us>)
Список pgsql-hackers
Try this:

#include <stdio.h>

main()
{
double f1 = 123.45;
double f2 = 123.00;
double r;
   r = f1 - f2;   printf("%0.15f  %0.15f  %0.15f\n", f1, f2, r);
}

Internal representation of 123.45 is not exact.   In the conversion to
binary, an irrational number is created which is truncated to 64 bits.


Bruce Momjian wrote:

> > Hi all,
> >
> > I tried to divide 123.45 by 123.00 but PostgreSQL gives me a wrong
> > result:
> >
> > hygea=> select 123.45 - 123.00;
> >          ?column?
> > -----------------
> > 0.450000000000003
> > (1 row)
> >
>
> Wow, I get the same thing here.
>
> Even this doesn't work:
>
>         test=> select float8(123.45) - float8(123.00);
>                  ?column?
>         -----------------
>         0.450000000000003
>         (1 row)
>
> Now constants are automatically promoted to float8, so I expected the
> same results, but what is going on here?
>
> --
>   Bruce Momjian                        |  http://www.op.net/~candle
>   maillist@candle.pha.pa.us            |  (610) 853-3000
>   +  If your life is a hard drive,     |  830 Blythe Avenue
>   +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Vince Vielhaber
Дата:
Сообщение: Re: [HACKERS] 123.45 - 123 = 0.45
Следующее
От: Sferacarta Software
Дата:
Сообщение: Re[2]: [HACKERS] 123.45 - 123 = 0.45