Avatar billede trp79 Nybegynder
09. april 2003 - 22:32 Der er 15 kommentarer og
1 løsning

Afrunding af Double til 2 decimaler

Hejsa... jeg har nu forsøgt at afrunde understående Double pct til to decimaler.... men desværre uden held :o(
Håber nogen kan hjælpe :o)

private Double pct;

    public void setPct(Double pct) {
        this.pct = pct;
    }

this.pct vil jeg gerne have med 2 decimaler... men hvordan?
Mvh
Torben
Avatar billede arne_v Ekspert
09. april 2003 - 22:36 #1
double d = 123.456;
double d2 = ((int)(100*d))/100.0;
Avatar billede arne_v Ekspert
09. april 2003 - 22:38 #2
Det er nedrunding.

Afrunding vil være:

double d = 123.456;
double d2 = ((int)(100*d+0.5))/100.0;
Avatar billede arne_v Ekspert
09. april 2003 - 22:39 #3
public class TwoDecimals {

    public static void main(String[] args) {
        double d = 123.456;
        double d2 = ((int) (100 * d)) / 100.0;
        System.out.println(d2);
        double d3 = ((int) (100 * d + 0.5)) / 100.0;
        System.out.println(d3);
    }
}

udskriver:

123.45
123.46
Avatar billede trp79 Nybegynder
09. april 2003 - 22:40 #4
Jeg har kigget rundt på exp og set den løsning du kommer med arne... men det virker desværre ikke i mit tilfælde hvor jeg arbejde med et Double objekt :o(
Avatar billede arne_v Ekspert
09. april 2003 - 22:42 #5
Jamen du kan da konvertere fra Double til double og tilbage igen.
Avatar billede arne_v Ekspert
09. april 2003 - 22:44 #6
package test;

public class TwoDecimals {

    public static void main(String[] args) {
        double d = 123.456;
        double d2 = ((int) (100 * d)) / 100.0;
        System.out.println(d2);
        double d3 = ((int) (100 * d + 0.5)) / 100.0;
        System.out.println(d3);
        Double dd = new Double(d);
        Double dd2 = new Double(((int) (100 * dd.doubleValue())) / 100.0);
        System.out.println(dd2);
        Double dd3 = new Double(((int) (100 * dd.doubleValue() + 0.5)) / 100.0);
        System.out.println(dd3);
    }
}
Avatar billede arne_v Ekspert
09. april 2003 - 22:45 #7
Jeg ved ikke om det er kønt, men det virker.
Avatar billede arne_v Ekspert
09. april 2003 - 22:50 #8
Vær iøvrigt opmærksom på muligheden af at gemme uden at afrunde og kun
udkrive med 2 decimaler via java.text.DecimalFormat !
Avatar billede trp79 Nybegynder
09. april 2003 - 22:52 #9
Ja den har jeg også set, men det kan kun bruges til "dos" udskrivning hvis jeg ikke tager helt fejl....
Avatar billede arne_v Ekspert
09. april 2003 - 22:53 #10
Den konverterer til en StringBuffer som kan printes til
et console vindue, men som også kan puttes ind i et GUI felt.
Avatar billede arne_v Ekspert
09. april 2003 - 22:53 #11
Eksempel:

import java.text.DecimalFormat;

public class TwoDecimals {

    public static void main(String[] args) {
        double d = 123.456;
        double d2 = ((int) (100 * d)) / 100.0;
        System.out.println(d2);
        double d3 = ((int) (100 * d + 0.5)) / 100.0;
        System.out.println(d3);
        Double dd = new Double(d);
        Double dd2 = new Double(((int) (100 * dd.doubleValue())) / 100.0);
        System.out.println(dd2);
        Double dd3 = new Double(((int) (100 * dd.doubleValue() + 0.5)) / 100.0);
        System.out.println(dd3);
        DecimalFormat fmt = new DecimalFormat("#.##");
        System.out.println(fmt.format(d));
        System.out.println(fmt.format(dd.doubleValue()));
    }
}
Avatar billede arne_v Ekspert
09. april 2003 - 22:56 #12
Bemærk at den afrunder ikke nedrunder.
Avatar billede trp79 Nybegynder
09. april 2003 - 23:01 #13
Det virker jo fint! Tak for det :o)
Er det på nogen måde let at tvinge den til at vise 2 decimaler? altså således at der ikke står fx 9.1 men 9.10?
Avatar billede arne_v Ekspert
09. april 2003 - 23:04 #14
DecimalFormat fmt = new DecimalFormat("#.00");

viser altid to decimaler også selvom de er nul.
Avatar billede arne_v Ekspert
09. april 2003 - 23:04 #15
Men jeg tror ikke det kan laves med numerisk konvertering.
Avatar billede trp79 Nybegynder
09. april 2003 - 23:08 #16
Okey, så er det lige meget - jeg skulle bruge det med nummerisk formatering.
Tak for hjælpen i hvert fald.
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