Jump to content
  • 0

afronden naar boven, naar volgende 50 of 100-tal


Max L

Question

Ik heb in dezelfde tabel een tweetal getalvelden. Het veld dat ik voor het gemak veld A zal noemen bevat de waarde 50 of 100. Dit betekend dat de inhoud van veld B naar boven afgerond dient te worden naar, in geval veld A de waarde 50 kent kent, het eerst volgende vijftigtal en in geval veld A de waarde 100 kent, dient veld B naar het eerst volgende honderdtal te worden afgerond.

 

Dit lukt me niet. Bij Count loop ik tegen het probleem aan dat ik wel in een 10 of 100-tal kan afronden, doch deze functie rond helaas ook naar beneden af en heeft moeite met afronden naar een 50-tal. En bij de Ceiling functie krijg ik het alleen voor elkaar dat deze van veld B slechts de decimalen afrond en niet naar, afhankelijk van de waarde in veld A, het volgende vijftig of honderdtal.

 

Wie kent een oplossing?

Link to comment

8 answers to this question

Recommended Posts

  • 0

Naar boven afronden:

VeldB - Mod ( VeldB; VeldA ) + VeldA

Deze gaat niet goed, want als je VeldB een exact veelvoud is van van de modulus, dan wordt er een modulus teveel opgeteld. Bijvoorbeeld met de waarde 50 in VeldA:

 

  • 149 - Mod ( 149 ; 50 ) + 50 levert: 149 - 49 + 50 = 150 (en dat is helemaal correct)
    150 - Mod ( 150 ; 50 ) + 50 levert: 150 - 0 + 50 = 200 (en dat had 150 moeten zijn)

 

Dus moet de formule ietsje worden uitgebreid en dan werkt ie wel correct:

 

VeldB - Mod ( VeldB; VeldA ) + If ( Mod ( VeldB; VeldA ) > 0 ; VeldA )

 

Nog wel een paar opmerkingen:

  • Als VeldA=0 dan is het resultaat altijd 0
    Als VeldB negatief is, dan wordt nog steeds naar boven afgerond: Voor VeldA=50 en VeldB=-25 is de uitkomst 0 en niet -50
    Het maakt niet uit of VeldA negatief of positief is, de uitkomst is hetzelfde.

Link to comment
  • 0

Ja, ik vond al dat het er iets te gemakkelijk uit zag toen ik het schreef. :)

Die extra modulo controle dan is inderdaad nodig.

Ik had geen rekening gehouden met negatieve getallen omdat de vraagsteller dat niet expliciet aangaf.

 

Toch mooi dat een forum meerdere oplossingen kan bieden voor een probleem. :D

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