Re: [NOVICE] Postgres storing time in strange manner
От | Tom Lane |
---|---|
Тема | Re: [NOVICE] Postgres storing time in strange manner |
Дата | |
Msg-id | 1931.1032290094@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Postgres storing time in strange manner (Casey Allen Shobe <cshobe@secureworks.net>) |
Ответы |
Re: [NOVICE] Postgres storing time in strange manner
Re: [NOVICE] Postgres storing time in strange manner |
Список | pgsql-bugs |
Ron Johnson <ron.l.johnson@cox.net> writes: > Out of curiosity: why does -ffast-math break the datetime rounding code? We dug into this last night, and it turns out that the culprit is code like int hour = time / 3600; where time is a double. This yields an exact result when done correctly, but with -ffast-math gcc will "improve" it to int hour = time * 0.000277777777777778; the constant being the nearest double value to 1.0 / 3600.0. The problem is that the constant is inexact and in fact is slightly too large; so for example if time is exactly 18000.0, you get a resulting hour value of 4, not 5, after truncation to integer. Repeated a couple more times, what should have been 5:00:00 comes out as 4:59:60 ... regards, tom lane
В списке pgsql-bugs по дате отправления: