Avatar billede baitianlong Nybegynder
11. marts 2003 - 15:55 Der er 9 kommentarer og
1 løsning

Rund double af til 2 decimaler

Hvordan gør man det ??

((double)5/9) * (fah - 32) + "");

Skal kun have to decimaler...... (o;
Avatar billede arne_v Ekspert
11. marts 2003 - 16:09 #1
double x;
int v = (int)(100 * x + 0.5);
double z = v / 100.0;
Avatar billede arne_v Ekspert
11. marts 2003 - 16:10 #2
Ovenstående laver afrunding til nærmeste to decimaler.

Hvis du vil have nedruning til to decimaler, så drop +0.5.
Avatar billede _carsten Nybegynder
11. marts 2003 - 17:08 #3
Et af de andre alternativer kunne være denne løsning, hvert "o" i DecimalFormat("0.00")
er en slags flag, som indikerer hvor mange decimaler der skal være på hver side af punktummet, den runder automatisk op og ned.

Carsten


import java.text.DecimalFormat;
   
public class Test {

    public Test() {
        double d = (double) 11/6;
        double d1 = (double) 5/3;
       
        DecimalFormat output = new DecimalFormat("0.00");
       
        System.out.println( output.format(d) );
        System.out.println( output.format(d1) );
    }
   
    public static void main (String[] a) {
        new Test();
    } 
}
Avatar billede baitianlong Nybegynder
11. marts 2003 - 17:20 #4
String t = top.getText();
double cel = Double.parseDouble(t);
int v = (int)(100 * cel + 0.5);
bund.setText((double)(9/5) * v + 32 / 100.0 + "");

Jeg kan ikke få det til at virke :(
Avatar billede arne_v Ekspert
11. marts 2003 - 17:30 #5
Du skal først lave konverteringen til sidst.

Eksempel:

public class Round {

    public static void main(String[] args) {
        String t = "123.456";
        double cel = Double.parseDouble(t);
        double far = 9.0 / 5.0 * cel + 32;
        int far100 = (int) (100 * far + 0.5);
        double far2dig = far100 / 100.0;
        System.out.println(far + " -> " + far2dig);
    }
}
Avatar billede _carsten Nybegynder
11. marts 2003 - 17:36 #6
int v = (int)(100 * cel + 0.5);  // RETTES TIL

double v = (double)(100 * cel + 0.5);

> arne_v:  Jeg havde ikke lige set, at du tidligere på dagen havde
            besvaret et spørgsmål vedrørende 2 decimaler.
         
Carsten
Avatar billede arne_v Ekspert
11. marts 2003 - 17:45 #7
carsten>

Jo, men i det spørgsmål blev der mere eksplicit spurgt efter
formateringen.

Jeg læste dette spørgsmål som en generel data konvertering.

Måske skulle jeg læse mere end overskriften inden jeg svarer !

:-)
Avatar billede arne_v Ekspert
11. marts 2003 - 17:48 #8
carsten>

Jeg forstår iøvrigt slet ikke din rettelse.

Det er meget bevist at jeg vil have den konverteret til int
for at slippe af med de "overflødige" decimaler.

Lad os starte med 123.456.

100 * 123.456 + 0.5 = 12346.1
(int)12346.1 = 12346
12346/100.0 = 123.46
Avatar billede _carsten Nybegynder
11. marts 2003 - 17:51 #9
Det samme her - iøvrigt tror jeg mit sidste svar er dybt godnat.

Desto mere jeg læser, ser jeg at det er dit forslag til oprunding.

Carsten
Avatar billede baitianlong Nybegynder
11. marts 2003 - 20:12 #10
arne_v >> Dit svar er smukt. Især efter implementeringen i min kode (o;

Tak for hjælpen
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