Comment Java Chaîne.format avec une précision variable?
J'aimerais varier la précision d'une double représentation dans une chaîne, je suis la mise en forme basée sur la saisie de l'utilisateur. Droit maintenant, je vais essayer quelque chose comme:
String foo = String.format("%.*f\n", precision, my_double);
cependant, je reçois un java.util.UnknownFormatConversionException
. Mon inspiration pour cette approche a été C printf et cette ressource (section 1.3.1).
Dois-je avoir une simple erreur de syntaxe quelque part, ne le support de Java ce cas, ou est-il une meilleure approche?
Edit:
Je suppose que je pourrais faire quelque chose comme:
String foo = String.format("%." + precision + "f\n", my_double);
mais je serais toujours intéressé à la prise en charge native pour une telle opération.
Vous devez vous connecter pour publier un commentaire.
Vous répondu à votre propre question - construire votre chaîne de format de manière dynamique... valide les chaînes de format de suivre les conventions décrites ici: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax.
Si vous souhaitez en forme décimale qui occupe 8 caractères au total (y compris le point décimal), et que vous vouliez 4 chiffres après la virgule, votre chaîne de format doit ressembler à "%8.4 f"...
À ma connaissance, il n'y a pas de "prise en charge native" en Java, au-delà des chaînes de format souple.
Vous pouvez utiliser le DecimalFormat classe.
Si vous souhaitez définir la précision au moment de l'exécution appel:
Pourquoi pas :
ou :