web-dev-qa-db-fra.com

Double format décimal en Java

J'ai des problèmes pour formater les décimales d'un double. Si j'ai une double valeur, par exemple 4.0, comment formater les décimales pour que ce soit 4.00 à la place?

93
Christoffer

Un des moyens serait d'utiliser NumberFormat .

NumberFormat formatter = new DecimalFormat("#0.00");     
System.out.println(formatter.format(4.0));

Sortie:

4,00

186
kosa

Avec Java 8, vous pouvez utiliser la méthode format ..: - 

System.out.format("%.2f", 4.0); // OR

System.out.printf("%.2f", 4.0); 
  • f est utilisé pour floating valeur en points ..
  • 2 après le signe décimal, nombre de décimales après le .

Pour la plupart des versions de Java, vous pouvez utiliser DecimalFormat: -

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));
56
Rohit Jain

Utilisez String.format :

String.format("%.2f", 4.52135);

39

En utilisant String.format, vous pouvez faire ceci:

double price = 52000;
String.format("$%,.2f", price);

Remarquez la virgule qui diffère de la réponse de @ Vincent

Sortie:

$52,000.00

Une bonne ressource pour le formatage est la page official Java sur le sujet.

16
ojonugwa ochalifu

Vous pouvez toujours utiliser la méthode statique printf from System.out - vous devez alors implémenter le formateur correspondant; cela permet d'économiser de l'espace dans lequel d'autres exemples vous ont été demandés. 

Ex:

System.out.format("%.4f %n", 4.0); 

System.out.printf("%.2f %n", 4.0); 

Économise beaucoup d'espace disque, ce qui est un bonus considérable. Néanmoins, je suis d'avis que cet exemple est beaucoup plus facile à gérer que toute autre réponse, d'autant plus que la plupart des programmeurs connaissent la fonction printf de C (Java modifie cependant légèrement la fonction/méthode).

6
Lewis Robbins
new DecimalFormat("#0.00").format(4.0d);
3
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
3

Une autre méthode consiste à utiliser la méthode setMinimumFractionDigits de la classe NumberFormat.

Ici, vous spécifiez essentiellement le nombre de chiffres que vous souhaitez voir après le signe décimal.

Donc, une entrée de 4.0 produirait 4.00, en supposant que votre montant spécifié était 2.

Mais, si votre entrée Double contient plus que le montant spécifié, il prendra le montant minimum spécifié, puis ajoutera un chiffre supplémentaire arrondi

Par exemple, 4.15465454 avec un montant minimum de 2 spécifié produira 4.155

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

Essayez-le en ligne

0
achAmháin

Vous pouvez utiliser l'une des méthodes ci-dessous

  1. Si vous utilisez Java.text.DecimalFormat

    DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance(); 
    decimalFormat.setMinimumFractionDigits(2); 
    System.out.println(decimalFormat.format(4.0));
    

    OR

    DecimalFormat decimalFormat =  new DecimalFormat("#0.00"); 
    System.out.println(decimalFormat.format(4.0)); 
    
  2. Si vous voulez le convertir en format de chaîne simple

    System.out.println(String.format("%.2f", 4.0)); 
    

Tout le code ci-dessus sera imprimé 4.

0
Fazil

Fonctionne à 100%.

import Java.text.DecimalFormat;

public class Formatting {

    public static void main(String[] args) {
        double value = 22.2323242434342;
        // or  value = Math.round(value*100) / 100.0;

        System.out.println("this is before formatting: "+value);
        DecimalFormat df = new DecimalFormat("####0.00");

        System.out.println("Value: " + df.format(value));
    }

}
0
Mayank Parihar

Vous pouvez faire cela de plusieurs façons. Ceux-ci sont donnés ci-dessous:

Supposons que votre numéro d'origine est donné ci-dessous:

 double number = 2354548.235;

Utilisation de NumberFormat:

NumberFormat formatter = new DecimalFormat("#0.00");
    System.out.println(formatter.format(number));

Utilisation de String.format:

System.out.println(String.format("%,.2f", number));

Utilisation de DecimalFormat et du modèle:

NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
        DecimalFormat decimalFormatter = (DecimalFormat) nf;
        decimalFormatter.applyPattern("#,###,###.##");
        String fString = decimalFormatter.format(number);
        System.out.println(fString);

Utilisation de DecimalFormat et du modèle

DecimalFormat decimalFormat = new DecimalFormat("############.##");
        BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
        System.out.println(formattedOutput);

Dans tous les cas, la sortie sera: 2354548.23

Remarque :

Pendant l’arrondi, vous pouvez ajouter RoundingMode dans votre formateur. Voici quelques modes d'arrondissement donnés ci-dessous:

    decimalFormat.setRoundingMode(RoundingMode.CEILING);
    decimalFormat.setRoundingMode(RoundingMode.FLOOR);
    decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
    decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
    decimalFormat.setRoundingMode(RoundingMode.UP);

Voici les importations :

import Java.math.BigDecimal;
import Java.math.RoundingMode;
import Java.text.DecimalFormat;
import Java.text.NumberFormat;
import Java.util.Locale;
0