[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Incorrect sum of times in table
From: |
Nick Dokos |
Subject: |
Re: [O] Incorrect sum of times in table |
Date: |
Mon, 01 Jul 2013 16:49:08 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
Paul Stansell <address@hidden> writes:
> Hello,
>
> I noticed a case where the sum of two times in a table does not give
> the correct answer.
>
> To see this, create an org file with the following lines:
>
> | 0:00:31 |
> | 0:00:30 |
> |---------|
> | |
>
> Open it and type C-+ C-y in the empty cell of the table. The answer
> inserted is 0:01:00 instead of 0:01:01.
>
I think you mean C-c +.
The problem is that these things are calculated as decimal hours, using
floating point arithmetic and you get truncation towards 0 when the
value is printed out as an integer. The format in org-table-sum is
(format "%d:%02d:%02d" h m s)
but s is 0.9999... and it gets formatted as 0.
It might be better to use
(format "%.0f:%02.0f:%02.0f" h m s)
i.e. as floating point with no places after the decimal point
(in which case the decimal point does not seem to be output).
But there may be other problems that I have not thought of.
It might be even better to round the floating point number to
the nearest integer and use %d formats instead:
(format "%d:%02d:%02d" (round h) (round m) (round s))
--
Nick