From mboxrd@z Thu Jan 1 00:00:00 1970 From: be.proell@gmail.com (Bernhard =?utf-8?Q?Pr=C3=B6ll?=) Subject: Re: Calc: Multiply time (hours) with a float Date: Mon, 19 Sep 2016 17:33:24 +0200 Message-ID: <87bmzjq4zf.fsf@gmail.com> References: <2016-09-08T10-32-27@devnull.Karl-Voit.at> <2016-09-11T13-43-22@devnull.Karl-Voit.at> <87oa3u1vpn.fsf@luisa.c0t0d0s0.de> <2016-09-18T18-32-24@devnull.Karl-Voit.at> <874m5cs7tq.fsf@luisa.c0t0d0s0.de> <87oa3kqsy3.fsf@luisa.c0t0d0s0.de> <2016-09-19T13-38-25@devnull.Karl-Voit.at> <87a8f4m596.fsf@luisa.c0t0d0s0.de> <2016-09-19T14-57-54@devnull.Karl-Voit.at> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48113) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bm0aV-0006hD-Hu for emacs-orgmode@gnu.org; Mon, 19 Sep 2016 11:34:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bm0aP-0007FP-Vv for emacs-orgmode@gnu.org; Mon, 19 Sep 2016 11:34:31 -0400 Received: from mail-wm0-f52.google.com ([74.125.82.52]:34429) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bm0aP-0007Ee-MW for emacs-orgmode@gnu.org; Mon, 19 Sep 2016 11:34:25 -0400 Received: by mail-wm0-f52.google.com with SMTP id a25so3550184wmi.1 for ; Mon, 19 Sep 2016 08:34:25 -0700 (PDT) In-Reply-To: <2016-09-19T14-57-54@devnull.Karl-Voit.at> (Karl Voit's message of "Mon, 19 Sep 2016 15:18:16 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Karl Voit Cc: emacs-orgmode@gnu.org Hi, FWIW, there is a org-table-toggle-formula-debugger command. On Mon, Sep 19 2016, Karl Voit wrote: > * Michael Welle wrote: >> >> Karl Voit writes: >> >>>> [...] >>>>> #+TBLFM: @2$3='(* $2 (org-time-string-to-hours "$1"));L >>>> or converting $2 to a number before the calculation should work also, >>>> but is more to write ;). >>> >>> Hm. I still got #ERROR. I reduced my issue to calculate the float (for hours) >>> without multiplying it with "value": >> strange. I use the current Org version from git and Emacs 25.1. >> >>> | time [h:m:s] | value | product | >>> |--------------+---------+---------| >>> | 09:15:00 | 2.54321 | #ERROR | >>> >>> #+TBLFM: @2$3='(org-time-string-to-hours $1) >> That works for me. The default interpretation of $1 is used and >> therefore the value is fed into o-t-s-t-h as string. > > OK, this is my current issue then. > > I'm using Org from git/maint version 8.3.4 > (release_8.3.4-33-gd522fc) and GNU Emacs 24.5.1 (i686-pc-mingw32 > Windows) as well as Emacs 24.4.1 on GNU/Linux. > > Can somebody confirm my #ERROR behavior? > >>> #+TBLFM: @2$3='(org-time-string-to-hours $1);L >> That doesn't work. I'm not sure, but I guess it is because you asked for >> literal interpretation and it is not clear what that would mean for >> 09:15:00. > > I'd say the same. > >>> #+TBLFM: @2$3='(org-time-string-to-hours "$1");N >> Here you ask for interpretation as numbers. So the o-t-s-t-h function >> sees a stringified 9 as it's parameter value. Near, but still no t-shirt ;). > > I was wondering whether or not the stringification is done before or > after the number-conversion - as a test. It's an #ERROR anyway. > >>> ... each of the TBLFM results in the same error. >> Well, none of them looks like the one I wrote: >> >> #+TBLFM: @2$3='(* $2 (org-time-string-to-hours "$1"));L > > ... which I tried first, got an #ERROR and analyzed the issue. > Narrowing down to '(org-time-string-to-hours $1) is my issue since > I now understand the handling of $2 which is according to the > documentation. > >> You said, that gives an error, too. I have no idea, why. You can use >> (message...) and (type-of ...) to look at the types and values that you >> feed into your functions. Maybe that gives some insight? > > (type-of ...) -> very helpful > > | time [h:m:s] | value | product | > |--------------+---------+---------| > | 09:15:00 | 2.54321 | #ERROR | > > #+TBLFM: @2$3='(message (type-of (org-time-string-to-hours $1))) > #+TBLFM: @2$3='(type-of (org-time-string-to-hours $1)) > > ... both formulas lead to #ERROR in @2$3 with no message in the > *Message* buffer. > > From my understanding, the first one should have caused an output of > the type in the *Message* buffer and the second one should have > placed something like "integer" into @2$3. Am I correct? > >> The variant with converting $2 to a number is: >> #+TBLFM: @2$3='(* (string-to-number $2) (org-time-string-to-hours $1)) > > Since the issue is with $1, the (string-to-number $2) (which is > working) doesn't fix the #ERROR issue of $1 :-( > > > Thank you *very* much for your explanations! I (and hopefully many > others as well) am learning a lot here. -- Bernhard