I Java, når vi bruger en dobbelt datatype før en variabel, repræsenterer den 15 cifre efter decimalkommaet. Men nogle gange kræver vi kun to decimaler efter decimaltegn gerne repræsentere rupees og andre enheder. Så i dette afsnit vil vi diskutere måder at vise dobbelt op til to decimaler sammen med et ordentligt eksempel og Java-programmer.
Java giver følgende tre måder at vise dobbelt med 2 decimaler:
- Brug af decimalformat ('0,00')
- Brug af String.format()-metoden ('%.2f')
- Brug af BigDecimal
Lad os diskutere ovenstående måder en efter en.
Brug af DecimalFormat
Java Decimalformat er en konkret underklasse af klassen NumberFormat, der bruges til at formatere decimaltallene. klassen sørger for setRoundingMode() metode til at vise et dobbelt tal op til to decimaler.
Syntaks:
public void setRoundingMode(RoundingMode roundingMode)
Den accepterer afrundingstilstand som en parameter og tilsidesætter setRoundingMode()-metoden for NummerFormat klasse. Det kaster NullPointerException hvis vi ikke angiver nogen roundingMode. Følgende tabel beskriver de forskellige afrundingstilstande.
Sæt nummer | OP | NED | LOFT | ETAGE | HALF_OP | HALF_DOWN | HALF_JAG | UNØDVENDIG |
---|---|---|---|---|---|---|---|---|
5.5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 | smid ArithmeticException |
2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 | smid ArithmeticException |
1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | smid ArithmeticException |
1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | smid ArithmeticException |
1.0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
-1,0 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
-1.1 | -2 | -1 | -1 | -2 | -1 | -1 | -1 | smid ArithmeticException |
-1.6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 | smid ArithmeticException |
-2,5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 | smid ArithmeticException |
-5,5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 | smid ArithmeticException |
Vi har brugt en anden metode af klassen DecimalFormat er format() metode. Den formaterer en streng for at producere en streng.
Syntaks:
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
Metoden accepterer tre parametre nummer, resultat og position. Men de sidste to parametre er valgfrie. Det returnerer den formaterede talstreng. Metoden kaster Aritmetisk Undtagelse hvis Afrundingstilstand er indstillet til UNØDVENDIG.
TwoDecimalPlace1.java
import java.math.RoundingMode; import java.text.DecimalFormat; public class TwoDecimalPlace1 { //constructor of the DecimalFormat class private static final DecimalFormat decfor = new DecimalFormat('0.00'); public static void main(String args[]) { //defining a number of type double double num = 123.9876543567; System.out.println('Double Number: ' + num); System.out.println('Double Number: ' + decfor.format(num)); //123.99 //DecimalFormat, default is RoundingMode.HALF_EVEN decfor.setRoundingMode(RoundingMode.DOWN); System.out.println(' Before Rounding: ' + decfor.format(num)); //123.98 decfor.setRoundingMode(RoundingMode.UP); System.out.println('After Rounding Up: ' + decfor.format(num)); //123.99 } }
Produktion:
Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99
Brug af String.format()-metoden
Java giver også format()-metoden til at formatere tallet. Den tilhører String-klassen. Ved at bruge metoden kan man formatere et hvilket som helst tal og streng derefter.
For at ændre tallet op til to decimaler bruger vi %.2f for at formatere nummeret. Bemærk, at vi ikke kan afrunde tallet i String.format()-metoden, altid runde halvt op.
Syntaks:
public static String format(String format, Object... args)
Metoden accepterer følgende to parametre:
format: Det er en formateret streng, som vi ønsker.
argumenter: Disse er de argumenter, der henvises til af formatspecifikationerne i formatstrengen.
Det returnerer den formaterede streng. Det kaster IllegalFormatException hvis formatstrengen indeholder ulovlig syntaks. Den kaster også NullPointerException hvis vi angiver formatet som null.
TwoDecimalPlace2.java
public class TwoDecimalPlace2 { public static void main(String args[]) { //defining a number of type double double num = 10.98765432167; System.out.println('Double Number: ' + num); //use either of the following two statements for two decimal places both gives the same result System.out.println('Double Number: ' + String.format('%.2f', num)); System.out.format('Double Number: %.2f', num); } }
Produktion:
Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99
Brug af BigDecimal
Vi kan også bruge Java BigDecimal Class til at vise et tal op til to decimaler. Det hører til java.math.BigDecimal pakke. Det udvider Number-klassen og implementerer Sammenlignelig interface.
Klassen giver setScale() metoden. Syntaksen er som følger:
Syntaks:
setScale(int newScale, RoundingMode roundingMode)
Metoden accepterer to parametre:
newScale: Skalaen for den BigDecimal-værdi, der skal returneres.
til loop java
roundingMode: Den afrundingstilstand, som vi ønsker at anvende.
Den returnerer BigDecimalen, hvis skala er den angivne værdi, og hvis uskalerede værdi bestemmes ved at gange eller dividere denne BigDecimals uskalerede værdi med den passende potens af ti for at bevare dens samlede værdi.
Metoden kaster Aritmetisk Undtagelse hvis Afrundingstilstand er indstillet til UNØDVENDIG . RoundingMode er en enum, der giver RoundingMode diskuteret ovenfor.
En anden metode, som vi har brugt i dette program er BigDecimal.doubleValue(). Det konverterer BigDecimal til en dobbelt nummer. Lad os se et eksempel.
TwoDecimalPlace3.java
import java.math.BigDecimal; import java.math.RoundingMode; public class TwoDecimalPlace3 { public static void main(String args[]) { //defining a number of type double double num = 12.4565652239; System.out.println('Double Number: ' + num); BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP); double newNum = bd.doubleValue(); System.out.println('Up to two decimal places: ' + newNum); } }
Produktion:
Double Number: 12.4565652239 Up to two decimal places: 12.46