afronden van getallen

Status
Niet open voor verdere reacties.

joost53

Gebruiker
Lid geworden
5 dec 2008
Berichten
10
ik heb een programma gemaakt dat je de weerstand in serie en parralel schakelingen kunt uitrekenen.

nu werkt dit allemaal perfect maar ik zou graag het uitkomst getal willen afronden naar de 'E12' reeks. voor wie het niet weet, dat zijn eer serie weerstanden met vaste waarde.

de E12 reeks bestaat uit 10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82 en mogen allemaal met de macht 10 vermenigvuldigt worden dus bij 12 kan het zijn 1,2 , 12 , 120 , 1200 , 12000

dus stel de uitkomst is 136.7 dan moet hij er 139 van maken.
een manier is :
Code:
select case Text1.text
case "36" (en dan tot en met, maar hoe weet ik niet:P) "39"
case "360" (tot en met) "390"
etc.

ten eerste weet ik niet hoe je case tot en met kan doen, mischien zoiets
case: "36" >=< "39"

en en tweede is het zoiezo al veel typwerk zo en er is vast wel een kortere en snellere manier:)

kan iemand mij helpen

bvd
 
Je kunt een array maken met de laagste waardes die gecontroleerd moeten worden, en dan met twee loops controleren of het opgegeven getal binnen een bepaald bereik valt en dan afronden.

Iets als onderstaande:

Code:
double arr[] = { 1.0, 1.2, 1.5,
                                  1.8, 2.2, 2.7, 
                                  3.3, 3.9, 4.7,
                                  5.6, 6.8, 8.2 };

dim d as double = 0.1, r as double

for int j as integer = 0 to N
  d = d * 10
  for int k as integer = 0 to 9 'hele array
      if invoer_getal > arr(k) * d AND invoer_getal < arr(k+1) * dthen
          double dd = (arr(k+1) - arr(k))  * d / 2          
          if invoer_getal < arr(k+1) * d + dd then
               r = arr(k) * d
          else
               r = arr(k+1) * d
          end if
      end if
  next
next

(code is uiteraard niet getest, en de array van doubles is zeker verkeerd)

edit: code klopt volgens mij niet helemaal, maar het gaat om het idee. Als je er niet uitkomt dan wil ik hem nog wel aanpassen, maar niet meer vandaag, noch morgen gaat dat lukken. :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan