logo

Två decimaler Java

I Java, när vi använder en dubbel datatyp före en variabel representerar den 15 siffror efter decimalkomma. Men ibland kräver vi bara två decimaler efter decimaltecken som representerar rupier och andra enheter. Så i det här avsnittet kommer vi att diskutera sätt att visa dubbla upp till två decimaler tillsammans med ett riktigt exempel och Java-program.

Två decimaler Java

Java tillhandahåller följande tre sätt att visa dubbelt med två decimaler:

  1. Använda DecimalFormat ('0,00')
  2. Använder metoden String.format() ('%.2f')
  3. Använder BigDecimal

Låt oss diskutera ovanstående sätt en efter en.

Använder DecimalFormat

Java Decimalformat är en konkret underklass till klassen NumberFormat som används för att formatera decimaltalen. klassen tillhandahåller setRoundingMode() metod för att visa ett dubbelt tal upp till två decimaler.

Syntax:

 public void setRoundingMode(RoundingMode roundingMode) 

Den accepterar avrundningsläge som en parameter och åsidosätter setRoundingMode()-metoden för NumberFormat klass. Det kastar NullPointerException om vi inte anger något avrundningsläge. Följande tabell beskriver de olika avrundningslägena.

Sätt nummer UPP NER TAK GOLV HALF_UP HALF_DOWN HALF_JÄMN ONÖDIG
5.5 6 5 6 5 6 5 6 kasta ArithmeticException
2.5 3 2 3 2 3 2 2 kasta ArithmeticException
1.6 2 1 2 1 2 2 2 kasta ArithmeticException
1.1 2 1 2 1 1 1 1 kasta 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 kasta ArithmeticException
-1.6 -2 -1 -1 -2 -2 -2 -2 kasta ArithmeticException
-2,5 -3 -2 -2 -3 -3 -2 -2 kasta ArithmeticException
-5,5 -6 -5 -5 -6 -6 -5 -6 kasta ArithmeticException

Vi har använt en annan metod i klassen DecimalFormat är formatera() metod. Den formaterar en sträng för att producera en sträng.

Syntax:

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

Metoden accepterar tre parametrar nummer, resultat och position. Men de två sista parametrarna är valfria. Den returnerar den formaterade nummersträngen. Metoden kastar ArithmeticException om Avrundningsläge är satt till ONÖDIG.

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 

Använder String.format()-metoden

Java tillhandahåller också metoden format() för att formatera numret. Den tillhör String-klassen. Genom att använda metoden kan man formatera valfritt tal och sträng därefter.

java array sortera

För att ändra talet upp till två decimaler använder vi %.2f för att formatera numret. Observera att vi inte kan avrunda talet i metoden String.format(), utan alltid avrunda till hälften uppåt.

Syntax:

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

Metoden accepterar följande två parametrar:

formatera: Det är en formaterad sträng som vi vill ha.

args: Dessa är argumenten som formatspecifikationerna refererar till i formatsträngen.

Den returnerar den formaterade strängen. Det kastar IllegalFormatException om formatsträngen innehåller olaglig syntax. Det kastar också NullPointerException om vi anger 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 

Använder BigDecimal

Vi kan också använda Java BigDecimal Class för att visa ett tal upp till två decimaler. Den tillhör java.math.BigDecimal paket. Den utökar klassen Number och implementerar Jämförbar gränssnitt.

Klassen tillhandahåller metoden setScale(). Syntaxen är som följer:

Syntax:

 setScale(int newScale, RoundingMode roundingMode) 

Metoden accepterar två parametrar:

newScale: Skalan för BigDecimal-värdet som ska returneras.

roundingMode: Avrundningsläget som vi vill tillämpa.

Den returnerar BigDecimal vars skala är det angivna värdet och vars oskalade värde bestäms genom att multiplicera eller dividera denna BigDecimals oskalade värde med lämplig tiopotens för att behålla dess totala värde.

Metoden kastar ArithmeticException om Avrundningsläge är satt till ONÖDIG . RoundingMode är en uppräkning som tillhandahåller RoundingMode som diskuterats ovan.

längd på sträng java

En annan metod som vi har använt i det här programmet är BigDecimal.doubleValue(). Den konverterar BigDecimal till a dubbel siffra. Låt oss se ett exempel.

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