Formater un nombre à virgule flottante

Le code suivant montre trois façons de formater un nombre à virgule flottante pour l'afficher avec le nombre voulu de décimales. La deuxième façon est celle généralement recommandée.

import java.io.*;
import java.text.*;
import java.util.*;
 
public class FormatageVirguleFlottante {
    
    public static void main(String args[]) {
        double pi = 3.141592654;
        int nbDecimales = 4;
 
        System.out.println(pi);
        System.out.println();
 
        //
        // Méthode 1 : transformer le nombre en chaîne de caractères
        //
 
        String chaine = new Double(pi).toString();
 
        int posPoint = chaine.indexOf(".");
 
        chaine = chaine.substring(0, Math.min(chaine.length(),
            posPoint + nbDecimales + 1));
 
        System.out.println(chaine);
        System.out.println();
 
        //
        // Méthode 2 (recommandée) : avec la classe java.text.NumberFormat
        //
 
        NumberFormat nf = NumberFormat.getInstance();
 
        nf.setMaximumFractionDigits(nbDecimales);
 
        System.out.println(nf.format(pi));
        System.out.println();
 
        //
        // Méthode 3 : pour les nostalgiques du langage C
        //
 
        Formatter formateur = new Formatter((OutputStream) System.out);
 
       try {
           formateur.format("%1.4f %n%n", pi);
       }
       catch (IllegalFormatException ife) {
           System.err.println("Format invalide");
           System.exit(1);
       }
 
       formateur.flush();
       formateur.close();				
    }
}