Ga naar inhoud
  • 0

Zoek en vervang... aantal tekens achter de komma


Formidog

Vraag

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

aangepast door Formidog
Link naar reactie

5 antwoorden op deze vraag

Aanbevolen berichten

  • 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

aangepast door menno
CF aangepast om csv-records te kunnen bewerken
Link naar reactie
  • 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 naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...