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
Annonceindlæg fra Cognizant
09. april 2003 - 22:36
#1
double d = 123.456; double d2 = ((int)(100*d))/100.0;
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;
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
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(
09. april 2003 - 22:42
#5
Jamen du kan da konvertere fra Double til double og tilbage igen.
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); } }
09. april 2003 - 22:45
#7
Jeg ved ikke om det er kønt, men det virker.
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 !
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....
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.
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())); } }
09. april 2003 - 22:56
#12
Bemærk at den afrunder ikke nedrunder.
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?
09. april 2003 - 23:04
#14
DecimalFormat fmt = new DecimalFormat("#.00"); viser altid to decimaler også selvom de er nul.
09. april 2003 - 23:04
#15
Men jeg tror ikke det kan laves med numerisk konvertering.
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.
Kurser inden for grundlæggende programmering