Avatar billede mikmakmuk Nybegynder
08. april 2008 - 09:41 Der er 10 kommentarer og
1 løsning

Hvordan er det man runder op

Hvordan er det man runder op.  66/10 skal f.x give 7
Avatar billede pidgeot Nybegynder
08. april 2008 - 09:43 #1
Du skal bruge ceil-metoden i Math.
Avatar billede mikmakmuk Nybegynder
08. april 2008 - 10:27 #2
nu er det to int jeg har. Kan jeg ikke bare side

int tal = (66/10)+1;
Avatar billede pidgeot Nybegynder
08. april 2008 - 11:10 #3
Ja, men nej... for i det tilfælde ville 60/10 give 7.

Når begge er ints, kan du alligevel ikke bruge ceil, fordi divisionen inden da vil blive rundet ned (den laver integer division) - jeg gik ud fra at du havde en float/double ind over.

Du kan godt bruge det du kom med, hvis du lige laver et check på om der er en rest INDEN du lægger 1 til:

int a = 66;
int b = 10;
int tal = a / b;
if (a % b != 0)
  tal++;
Avatar billede arne_v Ekspert
08. april 2008 - 13:42 #4
int a = 66;
int b = 10;
int tal = (a + b - 1) / b;
Avatar billede jonesw Nybegynder
08. april 2008 - 23:47 #5
Som pidgeot så vil det jo kun gælde ved 66/10. Men hvis du stadig har to int, som er af forskellige tal, altså hvor det ene ikke er fast, så har jeg prøvet at lave en løsning til problemet. Det er som følger:

public int dived(int a, int b){
        Integer k1 = new Integer(a);
        Integer k2 = new Integer(b);
        double d1 = k1.doubleValue();
        double d2 = k2.doubleValue();
        double d3 = d1/d2;
        double d4 = (d3*10)%10;
       
               
        if(d4>=5){
            d3 = d3-(d4/10)+1;
        }
        else{
            d3 = d3-(d4/10);
        }
        return new Double(d3).intValue();
    }
Det skulle gerne returnere en int som er enten rundet op eller ned...
Avatar billede arne_v Ekspert
09. april 2008 - 02:17 #6
jonesw>

Får du løn per linie ?

:-)
Avatar billede jonesw Nybegynder
09. april 2008 - 08:44 #7
Hehe nej det gør jeg ikke... :-)
Da jeg stadig er lidt ny i at programmere, så vil jeg gerne have klarlagt om du mener at jeg skriver for mange linjer kode, eller for få...

men følte at der måtte skrives en metode som kunne hvad der blev bedt om, og som virkede på andre tal end 66/10...
Avatar billede t3ch Nybegynder
09. april 2008 - 09:51 #8
jonesw> Tror nok han mener du skriver mange. ;-)

Kunne klares på én som Arne skriver
int a = 66; int b = 10; int tal = (a + b - 1) / b;
Avatar billede jonesw Nybegynder
09. april 2008 - 10:06 #9
Men det som jeg har skrevet er til alle andre tal... hvis du f.eks. har 64/10 så skulle det jo gerne rundes ned til 6 og ikke op til 7...
Det var sådan at jeg forstod opgaven, hvor 66/10 var et eksempel.... men det kan da sikkert skrives på færre linjer kode:-)
Avatar billede pidgeot Nybegynder
09. april 2008 - 10:16 #10
Spørger bad eksplicit om at få rundet op (ikke rundet af). :)

Hvis vi endelig skal have doubles ind over, så kan man jo bare gøre dette:
int tal = Math.ceil((double)a/b);

(Math.round for afrunding)
Avatar billede jonesw Nybegynder
09. april 2008 - 10:50 #11
Ja spørger har jo fået hvad vedkommende ønskede... så der er jo ikke så meget mere at diskuter...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester