emacs-orgmode
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]