logo

To desimaler Java

I Java, når vi bruker en dobbel datatype før en variabel, representerer den 15 sifre etter desimaltegn. Men noen ganger krever vi bare to desimaler etter desimaltegn som for å representere rupier og andre enheter. Så i denne delen skal vi diskutere måter å vise dobbelt opp til to desimaler sammen med et skikkelig eksempel og Java-programmer.

To desimaler Java

Java gir følgende tre måter å vise dobbel på 2 desimaler:

  1. Bruke desimalformat ('0,00')
  2. Bruker String.format()-metoden ('%.2f')
  3. Bruker BigDecimal

La oss diskutere metodene ovenfor én etter én.

Bruker DecimalFormat

Java Desimalformat er en konkret underklasse av NumberFormat-klassen som brukes til å formatere desimaltallene. klassen gir setRoundingMode() metode for å vise et dobbelt tall opp til to desimaler.

Syntaks:

 public void setRoundingMode(RoundingMode roundingMode) 

Den godtar avrundingsmodus som en parameter og overstyrer setRoundingMode()-metoden til NumberFormat klasse. Det kaster NullPointerException hvis vi ikke spesifiserer noen avrundingsmodus. Tabellen nedenfor beskriver de forskjellige avrundingsmodusene.

Sett nummer OPP NED TAK GULV HALF_UP HALF_DOWN HALF_EVEN UNØDVENDIG
5.5 6 5 6 5 6 5 6 kaste ArithmeticException
2.5 3 2 3 2 3 2 2 kaste ArithmeticException
1.6 2 1 2 1 2 2 2 kaste ArithmeticException
1.1 2 1 2 1 1 1 1 kaste 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 kaste ArithmeticException
-1.6 -2 -1 -1 -2 -2 -2 -2 kaste ArithmeticException
-2,5 -3 -2 -2 -3 -3 -2 -2 kaste ArithmeticException
-5,5 -6 -5 -5 -6 -6 -5 -6 kaste ArithmeticException

Vi har brukt en annen metode i klassen DecimalFormat er format() metode. Den formaterer en streng for å produsere en streng.

Syntaks:

 public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) 

Metoden godtar tre parametere nummer, resultat og posisjon. Men de to siste parameterne er valgfrie. Den returnerer den formaterte tallstrengen. Metoden kaster Aritmetisk unntak hvis Avrundingsmodus er satt 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 } } 

Produksjon:

 Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99 

Bruker String.format()-metoden

Java gir også format()-metoden for å formatere tallet. Den tilhører String-klassen. Ved å bruke metoden kan man formatere hvilket som helst tall og streng deretter.

For å endre tallet opp til to desimaler bruker vi %.2f for å formatere nummeret. Merk at vi ikke kan runde tallet i String.format()-metoden, alltid runde halvveis opp.

Syntaks:

 public static String format(String format, Object... args) 

Metoden godtar følgende to parametere:

format: Det er en formatert streng vi ønsker.

args: Dette er argumentene som refereres til av formatspesifikasjonene i formatstrengen.

Den returnerer den formaterte strengen. Det kaster IllegalFormatException hvis formatstrengen inneholder ulovlig syntaks. Det kaster også NullPointerException hvis vi spesifiserer 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); } } 

Produksjon:

 Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99 

Bruker BigDecimal

Vi kan også bruke Java BigDecimal Class for å vise et tall opp til to desimaler. Det tilhører java.math.BigDecimal pakke. Den utvider Number-klassen og implementerer Sammenlignbar grensesnitt.

Klassen gir setScale()-metoden. Syntaksen er som følger:

Syntaks:

 setScale(int newScale, RoundingMode roundingMode) 

Metoden godtar to parametere:

newScale: Skalaen til BigDecimal-verdien som skal returneres.

i java

avrundingsmodus: Avrundingsmodusen vi ønsker å bruke.

Den returnerer BigDecimal hvis skala er den spesifiserte verdien og hvis uskalerte verdi bestemmes ved å multiplisere eller dividere denne BigDesimalens uskalerte verdi med riktig potens av ti for å opprettholde dens totale verdi.

Metoden kaster Aritmetisk unntak hvis Avrundingsmodus er satt til UNØDVENDIG . RoundingMode er en opptelling som gir RoundingMode diskutert ovenfor.

En annen metode som vi har brukt i dette programmet er BigDecimal.doubleValue(). Den konverterer BigDecimal til en dobbelt Antall. La oss 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); } } 

Produksjon:

 Double Number: 12.4565652239 Up to two decimal places: 12.46