Hvis værdien er 200.3456
, skal den formateres til 200.34
.
Hvis det er 200
, skal det være 200.00
.
Hvis du blot vil udskrive en double
med to cifre efter decimalkommaet, skal du bruge noget som dette:
double value = 200.3456;
System.out.printf("Value: %.2f", value);
Hvis du ønsker at få resultatet i en String
i stedet for at blive udskrevet til konsollen, skal du bruge String.format()
med de samme argumenter:
String result = String.format("%.2f", value);
Eller brug klassen DecimalFormat
:
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
Den nemmeste måde at gøre det på er at lave et trick som dette;
double val = ....;
val = val*100;
val = Math.round(val);
val = val /100;
hvis val starter på 200.3456 så går den til 20034.56 så bliver den afrundet til 20035 så dividerer vi den for at få 200.34.
hvis du altid ville afrunde nedad, kunne vi altid afrunde ved at kaste til en int:
double val = ....;
val = val*100;
val = (double)((int) val);
val = val /100;
Denne teknik vil fungere i de fleste tilfælde, fordi den kan løbe over for meget store doubler (positive eller negative), men hvis du ved, at dine værdier vil ligge i et passende interval, så burde det fungere for dig.
Det er normalt ikke det, man ønsker at afrunde en dobbelt. Brug i stedet String.format()
til at repræsentere det i det ønskede format.