Springen naar inhoud

Afronden


  • Log in om te kunnen reageren

#1

DePurpereWolf

    DePurpereWolf


  • >5k berichten
  • 9240 berichten
  • VIP

Geplaatst op 02 december 2011 - 18:05

Een raar vraagje,
ik heb een aantal nummers die ik af wil ronden, maar of ik nu naar tiende, honderdste of duizendste wil afronden is afhankelijk van dat nummer.

Ofwel,
Ik wil de volgende rij getallen af laten ronden tot wat daar onder staat.
3.14, 5.69, 51.19, 333.33, 90056, 3362.3,
naar
3, 6, 50, 300, 90000, 3000

Ik wil dus maar een number hebben, met daarna eventueel nulletjes.

Normaal word het afgerond tot:
3, 6, 51, 333, 90056, en 3362
Maar dat wil ik dus niet.

Weet iemand hoe dit soort afronden heet?
Hoe kan ik dit het beste oplossen?

Het is dus niet de bedoeling dat ik handmatig ga invullen of het groter dan 10 of 100 of 1000 is.
Als daar een code voor zou zijn zou het mooi zijn.
Het gaat over een hoop data dat ik behandel in Matlab.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 02 december 2011 - 18:15

Het is dus niet de bedoeling dat ik handmatig ga invullen of het groter dan 10 of 100 of 1000 is.
Als daar een code voor zou zijn zou het mooi zijn.
Het gaat over een hoop data dat ik behandel in Matlab.

die functie noemt over het algemeen floor(x). Het is meestal hetzelfde als round(x-0.5) :) Het hangt er van af wat je wil dat er bij negatieve getallen gebeurt.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#3

Erik Leppen

    Erik Leppen


  • >250 berichten
  • 367 berichten
  • Ervaren gebruiker

Geplaatst op 02 december 2011 - 19:42

Nee, het is juist niet floor. Want floor(3362.3) is gewoon 3362, en floor(5,69) = 5.

Wat ik gewoon zie is afronden op ťťn significant cijfer.

Of als je het in een formule wilt stoppen, dan is het x afgerond op veelvouden van

LaTeX

Aangezien x afronden op veelvouden van y hetzelfde is als

y * round(x/y)

is de formule die je zoekt:

LaTeX

Edit: getuige ook 10^ floor(log x / log 10) * round(x / (10^ floor(log x / log 10) )) op Wolfram|Alpha

Edit: een functie waarvan de grafiek een fractal is :)

Veranderd door Erik Leppen, 02 december 2011 - 19:47


#4

Drieske

    Drieske


  • >5k berichten
  • 10217 berichten
  • Moderator

Geplaatst op 02 december 2011 - 19:59

Even een vraagje. Begrijp ik het juist dat je 56 dan zou willen afronden op 60?
Zoek je graag naar het meest interessante wetenschapsnieuws? Wij zoeken nog een vrijwilliger voor ons nieuwspostteam.

#5

DePurpereWolf

    DePurpereWolf


  • >5k berichten
  • 9240 berichten
  • VIP

Geplaatst op 05 december 2011 - 11:45

Je hebt het aan het juiste eind Erik Leppen. je formule is inderdaad iets wat ik zoek.
De achtergrond is dat ik een schaalbalk op een gemaakte (microscoop) foto wil aanbrengen die rond de 100 pixels lang moet zijn en de correcte lengte moet aangeven. Dan is het goed als het op een mooi getal word afgerond.

#6

DePurpereWolf

    DePurpereWolf


  • >5k berichten
  • 9240 berichten
  • VIP

Geplaatst op 05 december 2011 - 13:38

Voor de geinteresseerde,

Dit is de matlab code die ik nu gebruik, en lijkt goed te werken.
Ik heb een fractie aangegeven, 4, want afronden op kwartalen is ook goed. Op die manier zijn de balk lengtes wat dichter bij elkaar.

% Make scalebar from magnification
fr = 4; % fractions of 4 are okay to round off to.
sb = 95; % Max scalebar length in pixels
xx = scalemag*fr*sb;
% real bar length in micron
reall = power(10,(floor(log10(xx)/log10(10)))).*round(xx./power(10,(floor(log10(xx)/log10(10)))))/fr; 
% pixel length of bar
pixell = reall./scalemag;





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures