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
|
Список | 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 по дате отправления: