Jump to content
  • 0

Zoek en vervang... aantal tekens achter de komma


Formidog

Question

Goedenavond

in een tekstveld staan, onder elkaar, telkens een aantal bedragen, bijvoorbeeld

1,2844036697247705
1,2385321100743
66,74816528925619
3,257064863
3,2730642201834863

soms 1, soms meer
Het aantal cijfers achter de komma is verschillend
 

Dezelfde inhoud heb ik ook in een ander veld, waar geen regeleinde in staat en waar de bedragen geen komma hebben maar een punt en gescheiden zijn door een code:
2.46598347107438|#$|2.822710743801653|#$|3.065884297520661
waarbij "|#$|" de code is

De bedoeling is dat er twee cijfers achter de komma komen.
Maar hoe?

Ik weet het niet

Dick

Edited by Formidog
Link to comment

5 answers to this question

Recommended Posts

  • 0

 

In FM16 heb je de While-fuctie niet tot je beschikking en een scriptje kan prima werken, maar is niet altijd even handig. Ik zou het met een "eigen functie" (custom function) oplossen.

RoundText ( NumberList ; DecimalSign ; Decimals ; Divider )

Je moet hierin het decimaalteken, het aantal gewenste decimalen én het lijstscheidingsteken opgeven. In het voorbeeld is de functie beschikbaar en bij elke stap staat commentaar wat er wordt gedaan.

TekstAfronden_v2.fmp12

Edited by menno
CF aangepast om csv-records te kunnen bewerken
Link to comment
  • 0

Even naar aanleiding van de opmerking van Andries: Wanneer je wél over de While-functie beschikt zou je zonder custom functie de berekening als volgt kunnen definieren:

// GOED

While ( 
      
      [ 
         count = ValueCount ( dec::waarden );
         nieuw = ""
      ];
      
      count > 0 ; 

      [
         waarde = MiddleValues ( dec::waarden ; count ; 1 ) ;
         nieuw = Round ( waarde ; 2 ) & ¶ & nieuw;
         count = count - 1
      ];

      nieuw
)

waarbij dec::waarden het veld in de TOC dec is waar de getalletjes in staan. Zie bijgevoegd bestandje.

Pas hierbij wel op voor een enorme valkuil: Het is niet verplicht om bij veldnamen ook de TOC te noemen. Dit kan tot onverwachtte resultaten leiden. Bijvoorbeeld wanneer in bovenstaand voorbeeldje er een veld is dat ook 'nieuw' heet (dat is het geval in het voorbeeldbestandje) en je de declaratie voor de beginwaarde van nieuw in deze While-functie achterwege laat. Helemaal rare dingen krijg je wanneer je dan ook nog 'nieuw' als variable gebruikt: Zie ook dec3.fmp12 (klik even in het veld nieuw).

// FOUT!

While ( 
      
      count = ValueCount ( dec::waarden );
      
      count > 0 ; 

      [
         waarde = MiddleValues ( dec::waarden ; count ; 1 ) ;
         $nieuw = Round ( waarde ; 2 ) & ¶ & $nieuw;
         count = count - 1
      ];

      $nieuw
)

 

Kortom: doet de functie niet helemaal wat je verwacht, declareer dan de gebruikte variabelen in het initial value blok van de While-functie.

 

 

dec2.fmp12 dec3.fmp12

Link to comment

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...