From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karl Voit Subject: Re: Calc: Multiply time (hours) with a float Date: Mon, 19 Sep 2016 15:18:16 +0200 Message-ID: <2016-09-19T14-57-54@devnull.Karl-Voit.at> 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> Reply-To: Karl Voit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40608) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1blyTL-0007kE-HL for emacs-orgmode@gnu.org; Mon, 19 Sep 2016 09:19:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1blyTG-0001wx-M7 for emacs-orgmode@gnu.org; Mon, 19 Sep 2016 09:18:59 -0400 Received: from [195.159.176.226] (port=55466 helo=blaine.gmane.org) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1blyTG-0001vJ-FM for emacs-orgmode@gnu.org; Mon, 19 Sep 2016 09:18:54 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1blySn-0000gy-N8 for emacs-orgmode@gnu.org; Mon, 19 Sep 2016 15:18:25 +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: emacs-orgmode@gnu.org * 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. -- mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode: > get Memacs from https://github.com/novoid/Memacs < https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github