Re: Fix floating-point noise in pg_stat_us_to_ms()
John Naylor <johncnaylorls@gmail.com>
From: John Naylor <johncnaylorls@gmail.com>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2026-07-01T09:05:23Z
Lists: pgsql-hackers
On Mon, Jun 29, 2026 at 2:02 PM Bertrand Drouvot <bertranddrouvot.pg@gmail.com> wrote: > > Hi hackers, > > while reviewing [1], I noticed that the IO timings displayed in pg_stat_io can > produce floating-point noise like: > > postgres=# select read_time from pg_stat_io where read_time > 0; > read_time > --------------------- > 2.2640000000000002 > 0.08700000000000001 > > That's because 0.001 cannot be represented exactly in binary floating > point. I think this output looks weird, even if understandable. Note that with > extra_float_digits set to 0 you don't see the noise (but 1 is the default). Yes, multiplying by that constant also multiplies the rounding error. > Given that / 1000.0 is the most common way to do this kind of computation in the > code tree, I think that it makes sense to update pg_stat_us_to_ms() to do so. +1, I'll take care of this. -- John Naylor Amazon Web Services
Commits
-
Fix loss of precision in pg_stat_us_to_ms()
- 3eca140531f1 master landed