logo

Java à deux décimales

En Java, lorsque nous utilisons un type de données double avant une variable, il représente 15 chiffres après la virgule décimale. Mais parfois, nous n’avons besoin que de deux décimales après la virgule, comme pour représenter les roupies et d’autres unités. Ainsi, dans cette section, nous allons discuter de façons d'afficher le double jusqu'à deux décimales avec un exemple approprié et des programmes Java.

Java à deux décimales

Java propose les trois manières suivantes d'afficher le double à 2 décimales :

exécuter le shell de script
  1. Utilisation de DecimalFormat (« 0,00 »)
  2. Utilisation de la méthode String.format() ('%.2f')
  3. Utiliser BigDecimal

Discutons des méthodes ci-dessus une par une.

Utiliser le format décimal

Java Format décimal est une sous-classe concrète de la classe NumberFormat utilisée pour formater les nombres décimaux. la classe fournit le setRoundingMode() méthode pour afficher un nombre double jusqu’à deux décimales.

Syntaxe:

 public void setRoundingMode(RoundingMode roundingMode) 

Il accepte le mode d'arrondi comme paramètre et remplace la méthode setRoundingMode() du Format de nombre classe. Ça jette NullPointerException si nous ne spécifions aucun roundingMode. Le tableau suivant décrit les différents modes d'arrondi.

Mettre le numéro EN HAUT VERS LE BAS PLAFOND SOL HALF_UP HALF_DOWN HALF_EVEN INUTILE
5.5 6 5 6 5 6 5 6 lancer une exception Arithmétique
2.5 3 2 3 2 3 2 2 lancer une exception Arithmétique
1.6 2 1 2 1 2 2 2 lancer une exception Arithmétique
1.1 2 1 2 1 1 1 1 lancer une exception Arithmétique
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 lancer une exception Arithmétique
-1,6 -2 -1 -1 -2 -2 -2 -2 lancer une exception Arithmétique
-2,5 -3 -2 -2 -3 -3 -2 -2 lancer une exception Arithmétique
-5,5 -6 -5 -5 -6 -6 -5 -6 lancer une exception Arithmétique

Nous avons utilisé une autre méthode de la classe DecimalFormat qui est la format() méthode. Il formate une chaîne pour produire une chaîne.

Syntaxe:

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

La méthode accepte trois paramètres numéro, résultat et position. Mais les deux derniers paramètres sont facultatifs. Il renvoie la chaîne numérique formatée. La méthode jette ArithmétiqueException si Mode d'arrondi est réglé sur INUTILE.

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

Sortir:

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

Utilisation de la méthode String.format()

Java fournit également la méthode format() pour formater le nombre. Il appartient à la classe String. En utilisant la méthode, on peut formater n’importe quel nombre et chaîne en conséquence.

classe de chaîne Java

Afin de modifier le nombre jusqu'à deux décimales, nous utilisons %.2f pour formater le numéro. Notez que nous ne pouvons pas arrondir le nombre dans la méthode String.format(), en arrondissant toujours à moitié.

Syntaxe:

remplacer par une chaîne en Java
 public static String format(String format, Object... args) 

La méthode accepte les deux paramètres suivants :

format: C'est une chaîne formatée que nous voulons.

arguments : Ce sont les arguments référencés par les spécificateurs de format dans la chaîne de format.

Il renvoie la chaîne formatée. Ça jette Exception de format illégal si la chaîne de format contient une syntaxe illégale. Il jette aussi NullPointerException si nous spécifions le format comme 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); } } 

Sortir:

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

Utiliser BigDecimal

Nous pouvons également utiliser la classe Java BigDecimal pour afficher un nombre jusqu'à deux décimales. Il appartient à java.math.BigDecimal emballer. Il étend la classe Number et implémente le Comparable interface.

La classe fournit la méthode setScale(). La syntaxe est la suivante :

comment vérifier la taille de l'écran

Syntaxe:

 setScale(int newScale, RoundingMode roundingMode) 

La méthode accepte deux paramètres :

nouvelleÉchelle : L'échelle de la valeur BigDecimal à renvoyer.

Mode d'arrondi : Le mode d'arrondi que nous souhaitons appliquer.

Il renvoie le BigDecimal dont l'échelle est la valeur spécifiée et dont la valeur non mise à l'échelle est déterminée en multipliant ou en divisant la valeur non mise à l'échelle de ce BigDecimal par la puissance appropriée de dix pour conserver sa valeur globale.

La méthode jette le ArithmétiqueException si Mode d'arrondi est réglé sur INUTILE . Le RoundingMode est une énumération qui fournit le RoundingMode discuté ci-dessus.

arbre de recherche binaire]

Une autre méthode que nous avons utilisée dans ce programme est BigDecimal.doubleValue(). Il convertit BigDecimal en double nombre. Voyons 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); } } 

Sortir:

 Double Number: 12.4565652239 Up to two decimal places: 12.46