login  Naam:   Wachtwoord: 
Registreer je!
 Forum

afronden op halven

Offline Bruud - 15/08/2007 12:06
Avatar van BruudNieuw lid kan ik met php afronden op halven, dus als het 3,30 is dat hij afrond naar 3,5 en als het 3,15 is dat het dan 3,0 wordt
Bedankt!

6 antwoorden

Gesponsorde links
Offline marten - 15/08/2007 12:09
Avatar van marten Beheerder http://www.site...&id=24
Offline Wim - 15/08/2007 12:28 (laatste wijziging 15/08/2007 12:41)
Avatar van Wim Crew algemeen daar kan je niet mee wat hij bedoeld. Volgens mij zal je zelf een functie moeten maken met verschillende checks in...

//edit:
bruud: de code die ik hier gepost had werkt niet, ik was bepaalde dingen vergeten.

Je kan het natuurlijk wel verbeteren (nog 2 if's oid toevoegen), en dan zou het moeten werken 
Offline Bruud - 15/08/2007 12:40
Avatar van Bruud Nieuw lid bedankt!!
Offline Grayen - 15/08/2007 12:44 (laatste wijziging 15/08/2007 13:22)
Avatar van Grayen PHP ver gevorderde Ik heb net een functie voor je geschreven:

  1. <?php
  2. if(!function_exists('roundhalf'))
  3. {
  4. function roundhalf($mFloat, $bToString = false)
  5. {
  6. if(is_string($mFloat) && strpos($mFloat, ',') !== false)
  7. {
  8. $mFloat = str_replace(',', '.', $mFloat);
  9. }
  10.  
  11. $fFloat = (float) $mFloat;
  12.  
  13. $fFloat = round($fFloat, 1);
  14.  
  15. $sFloat = (string) $fFloat;
  16.  
  17. $fEnd = (float) ('0.'.end(explode('.', $sFloat)));
  18.  
  19. $mReturn = floor($fFloat);
  20.  
  21. if($fEnd >= 0.25 && $fEnd < 0.75)
  22. {
  23. $mReturn += 0.5;
  24. }
  25. else if($fEnd >= 0.75)
  26. {
  27. $mReturn += 1;
  28. }
  29.  
  30. if($bToString)
  31. {
  32. $sReturn = (string) $mReturn;
  33.  
  34. if(strpos($sReturn, '.') === false)
  35. {
  36. $sReturn .= '.0';
  37. }
  38.  
  39. $mReturn = str_replace('.', ',', $sReturn);
  40. }
  41.  
  42. return $mReturn;
  43. }
  44. }
  45.  
  46. # Je kunt het als string opgeven met punt of komma.
  47. echo roundhalf('3,24'); # output: (float) 3
  48. echo roundhalf('3,24', true); # output: (string) 3,0
  49.  
  50. # En je kunt hem gewoon als float opgeven.
  51. echo roundhalf(3.3); # output: (float) 3,5
  52. echo roundhalf(3.8); # output: (float) 4
  53. ?>


Edit: vergeten $mFloat = voor str_replace(...); te zetten, waardoor als je hem als string met komma opgaf hij niet correct werkte.

Edit2: Nu kun je aangeven of je hem als string terug wilt (met een komma notatie).
Offline Wim - 15/08/2007 12:58
Avatar van Wim Crew algemeen ik dacht eerst ook aan zoiets, maar dat voldoet imo niet.

Wat gaat je script met bvb 3.3 doen...?
Offline Grayen - 15/08/2007 13:14
Avatar van Grayen PHP ver gevorderde met 3.3 gaat ie naar 3.5, want 3.3 >= 3.25 en 3.3 < 3.75
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.219s