Java double à chaîne avec une précision spécifique

Je voudrais convertir double en Ssortingng . Je veux qu’il ait le moins de chiffres possible et au maximum 6.

J’ai donc trouvé Ssortingng.format("%.6f", d) qui convertit mon 100.0 en 100.000000 . La précision maximale fonctionne correctement, mais j’aimerais qu’elle soit convertie à 100 (précision minimale). Avez-vous une idée de quelle méthode fonctionne comme ça?

Utilisez DecimalFormat : new DecimalFormat("#.0#####").format(d) .

Cela produira des nombres avec 1 à 6 chiffres décimaux.

Etant donné que DecimalFormat utilisera les symboles de la langue par défaut, vous voudrez peut-être indiquer quels symboles utiliser:

 //Format using english symbols, eg 100.0 instead of 100,0 new DecimalFormat("#.0#####", DecimalFormatSymbols.getInstance( Locale.ENGLISH )).format(d) 

Pour formater 100.0 à 100, utilisez la chaîne de format #.###### .

Notez que DecimalFormat arrondira par défaut. Par exemple, si vous passez 0.9999999 vous obtiendrez le résultat 1 . Si vous souhaitez obtenir 0.999999 place, fournissez un mode d’arrondi différent:

 DecimalFormat formatter = new DecimalFormat("#.######", DecimalFormatSymbols.getInstance( Locale.ENGLISH )); formatter.setRoundingMode( RoundingMode.DOWN ); Ssortingng s = formatter.format(d); 

C’est un hack pas cher qui fonctionne (et ne présente pas de problème d’arrondi):

 Ssortingng ssortingng = Ssortingng.format("%.6f", d).replaceAll("(\\.\\d+?)0*$", "$1"); 

Ssortingng.format("%.0", d) ne vous donnera pas de décimales

-ou-

Ssortingng.format("%d", (int)Math.round(f))

Ne pourriez-vous pas créer une fonction setPrecision, un peu comme ceci

 private static Ssortingng setPrecision(double amt, int precision){ return Ssortingng.format("%." + precision + "f", amt); } 

alors bien sûr l’appeler

 setPrecision(variable, 2); // 

De toute évidence, vous pouvez régler le problème pour l’arrondir ou tout ce que vous devez faire.