The following bug has been logged online:
Bug reference: 6217
Logged by: Chris Gernon
Email address: kabigon@gmail.com
PostgreSQL version: 9.1.0
Operating system: Windows XP
Description: to_char() gives incorrect output for very small float
values
Details:
The to_char() function gives incorrect output for float values whose decimal
expansion has several digits (more than somewhere around 14-15) after the
decimal point.
To reproduce:
CREATE TABLE t (
id serial,
f double precision,
CONSTRAINT t_pk PRIMARY KEY (id)
);
INSERT INTO t (f) VALUES (0.0000000000000000000000000000000563219288);
----------------------------------------
SELECT to_char(f,
'FM999990.99999999999999999999999999999999999999999999999999') FROM t WHERE
id = 1;
Expected Output:
0.0000000000000000000000000000000563219288
Actual Output:
0.
----------------------------------------
SELECT to_char(f,
'999990.99999999999999999999999999999999999999999999999999') FROM t WHERE id
= 1;
Expected Output:
0.00000000000000000000000000000005632192880000000000
Actual Output:
0.00000000000000
----------------------------------------