Mike

> On 27 Jul 2015, at 19:14, Michael Doub <miked...@gmail.com> wrote:
> 
> Peter, there is a function in the MasterLibrary that does this for you.  Look 
> in the Text section.
> 
> https://www.dropbox.com/s/3wpwn3hfbmpl7sk/MasterLibrary.livecode?dl=0
> 
> Regards,
>   Mike

The MasterLibrary is impressive, I should have looked at it before.

The function didn’t seem to have the exact format that I needed but it was a 
good stimulus to write one that meets my needs. I wanted to format the numbers 
in what I call accounting format - thousands separators with negative numbers 
in brackets (or parentheses depending from where one hails). 

Thanks to LiveCode’s chunking the function is very short, dealing with the 
arguments takes almost as much code as the function. I include it here in case 
it is of use to others. I’m sure it could be improved and would welcome any 
suggestions.

function numToAccounting pNum, pDecimalSeparator, pThousandSeparator 
# Purpose:    Converts a number to accounting format
# Inputs:
#             pNum                      The number to be converted
#             pDecimalSeparator         The character to be used, default "."
#             pThousandSeparator        The character to be used, default ","
# Returns:                              The number in accounting format rounded 
toplevel
#                                               decimal places
  local tCount
  local tDecimalSeparator
  local tNum
  local tStart
  local tThousandSeparator
  
  # set the separators
  if pThousandSeparator is empty then
    put "," into tThousandSeparator
  else
    put pThousandSeparator into tThousandSeparator
  end if
  if pDecimalSeparator is empty then
      put "." into tDecimalSeparator
    else
      put pDecimalSeparator into tDecimalSeparator
  end if
  
  #format the numbers
  put format("%.2f", pNum) into tNum
  put tDecimalSeparator into char -3 of tNum
  put 0 into tCount
  put the length of tNum - 3 into tStart
  repeat with i = tStart down to 1
    add 1 to tCount
    if tCount = 4 then 
      if char i of tNum  = "-" then exit repeat
      put tThousandSeparator after char i of tNum
      put 1 into tCount
    end if
  end repeat
  if pNum < 0 then
    put "(" into character 1 of tNum
    put ")" after tNum
  end if
  
  return tNum 
  
end numToAccounting
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to