Jump to content
  • 0

From num tot words


JeanWM

Question

Posted

Heeft iemand de custom function, of de berekening, voor het omzetten van getallen naar woorden, maar dan in het Nederlands?.

 

Ik heb het in het Engels, Frans en Spaans, maar zou dat ding nu wel eens in het Vlaams willen hebben.

 

Tx

3 answers to this question

Recommended Posts

  • 0
Posted

Op Briandunning.com heb ik de formule "NumberInWords(NumberIn;Currency;DecimalCurr)" (zie: http://www.briandunning.com/cf/106) gevonden van Chris Harvey van de Bank of Bermuda en heb deze aangepast naar het nederlandse getalformaat:

 

NumberInWords( NumberIn ; Currency ; DecimalCurr )

Case(NumberIn = 0; ""; 

Let ( [
FullNumber = GetAsNumber( numberin ); 
Number = Int( FullNumber ); 
len = If ( Number = 0 ; 0 ; Int(Log(Number)) + 1 )
] ; 
Case(len > 27; 
 "buiten bereik"; 
Currency = "EvalOnly"; 
  Let([
   Hundred = Left(number; 1); 
   TensOnes = Right(number; 2); 
   TONum = GetAsNumber(TensOnes); 
   Tens = Left(TensOnes; 1); 
   Ones = If( TONum < 20; TensOnes; Right(TensOnes; 1))
 ];
 Case(len = 3; 
   Choose(hundred; ""; "een"; "twee"; "drie"; "vier"; "vijf"; "zes"; "zeven"; "acht"; "negen") & "honderd" & Case(TONum≠0;"en"))
 & Case(TONum > 19; Choose(ones; ""; "een"; "twee"; "drie"; "vier"; "vijf"; "zes"; "zeven"; "acht"; "negen") & Case(ones>0 ; "en") & Choose(tens; ""; ""; "twintig"; "dertig"; "veertig"; "vijftig"; "zestig"; "zeventig"; "tachtig"; "negentig"); 
 Choose(ones; ""; "een"; "twee"; "drie"; "vier"; "vijf"; "zes"; "zeven"; "acht"; "negen"; "tien"; "elf"; "twaalf"; "dertien"; "veertien"; "vijftien"; "zestien"; "zeventien"; "achtien"; "negentien"))
);

 Case(len >3; 
   Let([
     UseLeft = Choose(Mod(len;  3);3; 1; 2); 
     NewLen= 10 ^ (len - UseLeft); 
     ThisValue = Div(number; NewLen); 
     NewValue = Number - ThisValue * NewLen
   ]; 
   NumberInWords ( ThisValue; "EvalOnly"; "None" ) & Choose( Div(len - 1; 3); ""; "duizend"; "miljoen"; "miljard"; "biljoen" ; "biljard" ; "triljoen" ; "triljard" ; "quadriljoen" ) & Case(NewValue ≠ 0; NumberInWords(NewValue; ""; "None"))
   ); 
 len = 0; "nul" ;
 NumberInWords(Number; "EvalOnly"; "None")) & Case(currency ≠ ""; " " & Currency)
 &  Case(DecimalCurr ≠ "None"; " en " 
   & Let(
     Decimal = Int(100 * (fullnumber - number)); 
   If(Decimal = 0; "nul"; NumberInWords(Decimal; "EvalOnly"; "None"))) & " " & DecimalCurr))
))

 

werkt bij mij als een zonnetje ;-)

 

mvg, Menno

  • 0
Posted

Bedankt Menno.

 

Hier is er echter een wolkje voor het zonnetje....

 

100 wordt weergegeven als "eenhonderd'

en

1000 wordt "eenduizend"

 

Blijkbaar is er wat taalkundig opkuiswerk nodig.....

 

Eens kijken of het Spaanse stramien wat hulp kan bieden.

  • 0
Posted

Dat is niet per ongeluk, op een cheque schrijf je namelijk voor 125,50:

Zegge Éénhonderdenvijfentwintig euro en vijftig eurocent. De formule echter erg simpel aan te passen ;-)

 

succes, Menno

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...