logo

Java de dos decimals

A Java, quan fem servir un tipus de dades doble abans d'una variable, representa 15 dígits després del punt decimal. Però de vegades només necessitem dos decimals després dels decimals, com per representar rupies i altres unitats. Per tant, en aquesta secció, parlarem de maneres de mostrar el doble fins a dos decimals juntament amb un exemple adequat i programes Java.

Java de dos decimals

Java ofereix les tres maneres següents de mostrar el doble amb 2 decimals:

  1. S'utilitza el format decimal ('0,00')
  2. Utilitzant el mètode String.format() ('%.2f')
  3. Utilitzant BigDecimal

Parlem de les maneres anteriors una per una.

canviar el nom de la carpeta de Linux

Utilitzant DecimalFormat

Java Format decimal és una subclasse concreta de la classe NumberFormat que s'utilitza per formatar els nombres decimals. la classe proporciona el setRoundingMode() mètode per mostrar un nombre doble fins a dos decimals.

Sintaxi:

 public void setRoundingMode(RoundingMode roundingMode) 

Accepta el mode d'arrodoniment com a paràmetre i anul·la el mètode setRoundingMode() del NumberFormat classe. Es tira NullPointerException si no especifiquem cap mode d'arrodoniment. La taula següent descriu els diferents modes d'arrodoniment.

Posa Número Amunt ABAIX SOTRE PLANTA MITJÀ_UP MITJÀ_BAIX MITJAT_PARELL INNECESSARIS
5.5 6 5 6 5 6 5 6 llança ArithmeticException
2.5 3 2 3 2 3 2 2 llança ArithmeticException
1.6 2 1 2 1 2 2 2 llança ArithmeticException
1.1 2 1 2 1 1 1 1 llança 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 llança ArithmeticException
-1.6 -2 -1 -1 -2 -2 -2 -2 llança ArithmeticException
-2.5 -3 -2 -2 -3 -3 -2 -2 llança ArithmeticException
-5.5 -6 -5 -5 -6 -6 -5 -6 llança ArithmeticException

Hem utilitzat un altre mètode de la classe DecimalFormat és el format () mètode. Formata una cadena per produir una cadena.

Sintaxi:

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

El mètode accepta tres paràmetres nombre, resultat i posició. Però els dos darrers paràmetres són opcionals. Retorna la cadena numèrica amb format. El mètode llança Excepció aritmètica si Mode d'arrodoniment està configurat a INNECESSARIS.

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 } } 

Sortida:

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

Utilitzant el mètode String.format().

Java també proporciona el mètode format() per formatar el número. Pertany a la classe String. Mitjançant el mètode, es pot formatar qualsevol número i cadena en conseqüència.

Per alterar el nombre fins a dos decimals, fem servir %.2f per formatar el número. Tingueu en compte que no podem arrodonir el nombre en el mètode String.format(), arrodonint sempre a la meitat.

puntuació de precisió de sklearn

Sintaxi:

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

El mètode accepta els dos paràmetres següents:

cadena java concat

format: És una cadena formatada que volem.

arguments: Aquests són els arguments als quals fan referència els especificadors de format a la cadena de format.

Retorna la cadena formatada. Es tira IllegalFormatException si la cadena de format conté una sintaxi il·legal. També llença NullPointerException si especifiquem el format com a nul.

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); } } 

Sortida:

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

Utilitzant BigDecimal

També podem utilitzar Java BigDecimal Class per mostrar un nombre fins a dos decimals. Pertany a java.math.BigDecimal paquet. Amplia la classe Number i implementa el Comparable interfície.

La classe proporciona el mètode setScale(). La sintaxi és la següent:

Sintaxi:

 setScale(int newScale, RoundingMode roundingMode) 

El mètode accepta dos paràmetres:

nova escala: L'escala del valor BigDecimal que s'ha de retornar.

constructor de cordes

Mode d'arrodoniment: El mode d'arrodoniment que volem aplicar.

Retorna el BigDecimal l'escala del qual és el valor especificat i el valor sense escala del qual es determina multiplicant o dividint el valor sense escala d'aquest BigDecimal per la potència adequada de deu per mantenir el seu valor global.

El mètode llança el Excepció aritmètica si Mode d'arrodoniment està configurat a INNECESSARIS . El RoundingMode és una enumeració que proporciona el RoundingMode comentat anteriorment.

Un altre mètode que hem utilitzat en aquest programa és BigDecimal.doubleValue(). Converteix BigDecimal a a doble nombre. Vegem un exemple.

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); } } 

Sortida:

 Double Number: 12.4565652239 Up to two decimal places: 12.46