---
title: "runda av flyttal uppåt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/78303-runda-av-flyttal-uppåt"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "FredrikF"
published: "2003-05-28T08:54:16.000Z"
updated: "2003-05-28T11:28:00.000Z"
replies: 6
views: 394
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/78303-runda-av-flyttal-uppåt"
---

# runda av flyttal uppåt

## #1 — FredrikF, 2003-05-28T08:54Z

Jag vill runda av ett flyttal uppåt så fort talet överstiger ett heltal.

Exempelvis skall divisionen 14/10 ge 2 och inte 1.4. Med andra ord, så fort resultatet överstiger heltalskvoten av divisionen skall det höjas till nästa heltal uppåt.

Hur görs det lämpligtvis i java?

Permalänk: https://www.webforum.nu/p/78303

## #2 — neox83, 2003-05-28T09:58Z

Hmm, tror inte det finns någon färdig metod för detta men jag är inte säker.
Math-klassen innehåller bara en round(up) metod. Sedan finns NumberFormat men den är mer för att hantera antal decimaler dvs utseendet på talet.

Så här kan då en fullösning på problemet se ut:

```
 double a = 0.4999999999999;
 double b = 14.0/10.0;
 double c = b+a;
 System.out.println((int)Math.round(c));
```

 
Först så kan man inte dividera 14/10 och förvänta sig ett decimaltal utan då får man en hettal.
Därför får antingen båda eller en av talen vara decumaltal. Mna kan också casta dem till double vilket kan avara praktiskt om de inte sätts i koden.

Sedan är det bara att öka det tal med 0.49999....
och avrunda det med den vanliga avrundningsmetoden.
Om talet skulle vara ett heltal så kommer denna metod runda ner till den det heltalet.

Permalänk: https://www.webforum.nu/p/1066185

## #3 — PeW, 2003-05-28T10:11Z

Varför inte helt enkelt testa om det finns en rest med modulooperatorn %? .. 

```
c = a/b;
if(a%b)
  c+=1;
```

Om svaret ska vara i heltal, dvs.

Permalänk: https://www.webforum.nu/p/1066195

## #4 — spango, 2003-05-28T10:32Z

Math.ceil(double a)

Permalänk: https://www.webforum.nu/p/1066219

## #5 — Motorhead, 2003-05-28T10:34Z

En annan variant

Här kommer en annan variant som ska funka om jag inte missförstått ditt problem.

public class Test{
	
	public Test(){
		float x = (float)Math.ceil((float)21 / (float)10);
		System.out.println("Resultat: "+x+" Egentligt resultat: "+((float)21 / (float)10));
	}
	
	public static void main(String\[\] args){
		new Test();
	}
}

Permalänk: https://www.webforum.nu/p/1066221

## #6 — FredrikF, 2003-05-28T10:49Z

min lösning...

Jag funderade lite kring modulusoperatorn ett tag men 
kom fram till föjlande lösning:

c = (int)Math.ceil(noOfMms/b) + 1;

Permalänk: https://www.webforum.nu/p/1066231

## #7 — Lime, 2003-05-28T11:28Z

> **spango skrev:**
>
> Math.ceil(double a)

Som sagt... varför göra det krångligt.

Permalänk: https://www.webforum.nu/p/1066282

---

Tråden på webben: https://www.webforum.nu/amne/java/78303-runda-av-flyttal-uppåt
