19. december 2003 - 14:26
Der er
10 kommentarer og 1 løsning
C# Round
Mår man bruger Math.Round() i C# runder den 0.5 ned og ikke op. Er der en anden funktion som jeg kan bruge i stedet for, hvis jeg vil have rundet op? Dette resultat giver round: Math.Round(3.4) = 3 Math.Round(3.5) = 3 Math.Round(3.6) = 4 jeg vil have Round(3.5) = 4
Annonceindlæg fra Kommando
19. december 2003 - 14:29
#1
Du tager din variabel og siger: double variabel = 3.5; if (variabel % 1 == 0.5) { variabel += 0.1; } Det virker lidt hovsa- og amatøragtigt, men det virker hver eneste gang og har ingen bi-effekter.
19. december 2003 - 14:31
#2
Ehm - men det kræver vist dine tal kun har ét decimal som vist i dit eksempel.
19. december 2003 - 14:36
#3
Yep, det kan jeg ikke være sikker på at de har...
19. december 2003 - 14:41
#4
jeg tror faktisk den virker alligevel - prøv! ved 3.50000001 skal den jo netop runde op som den også gør, ligesom den skal ved 3.49999999 - der er vistnok intet problem, udover det som der varetages ved mit lille eksempel. Jeg tror det virker.
19. december 2003 - 14:47
#5
... du kan bruge henholdsvis Math.Ceiling og Math.Floor til at runde hendholdsvis op eller ned ... /Wisen
19. december 2003 - 14:54
#6
Math.Floor(3.4) = 3.0 Math.Ceiling(3.4) = 4.0
19. december 2003 - 15:06
#7
Den holder ikke - han vil runde af, men den skal bare runde op hvis den er præcis på en halv, ligesom man gør i matematikkens verden. Du kan evt. lave Round halv-manuelt med Floor og Ceiling. if variabel < 3.5 Floor else Ceiling
19. december 2003 - 15:18
#8
Hvis jeg bruger string formatering så bliver det rundet op... og det var faktisk det jeg skulle bruge. String.Format("{0,2:f}",33.555); //33.56 Tak for hjælpen
19. december 2003 - 22:23
#9
For en god ordens skyld: Round runder ikke .5 ned - den runder .5 af til nærmeste lige tal. using System; class MainClass { public static void Main(string[] args) { Console.WriteLine(Math.Round(0.5)); Console.WriteLine(Math.Round(1.5)); Console.WriteLine(Math.Round(2.5)); Console.WriteLine(Math.Round(3.5)); Console.WriteLine(Math.Round(4.5)); Console.WriteLine(Math.Round(5.5)); } } outputter: 0 2 2 4 4 6
19. december 2003 - 22:38
#10
Og hvis man vil have god gammeldages 4/5 afrunding så kan man bruge: public static double MyRound(double x) { return Math.Floor(x + 0.5); }
19. december 2003 - 22:40
#11
Ihh. Det er smart!
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.