Chaîne de formatage dans la scala, d'un maximum de précision décimale
"%.3f".format(1)
retourne 1.000
.
"%.3f".format(4.0/3.0)
retourne 1.333
.
Est-il un moyen facile d'avoir ces retour 1
et 1.333
? Je pensais que la norme printf
format spécifié que la précision que le maximum déjà, mais apparemment pas en Scala.
Scala utilise juste normal Java mise en forme, de sorte que la question n'est pas vraiment de la Scala. Voir download.oracle.com/javase/7/docs/api/java/util/Formatter.html pour une description complète des chaînes de mise en forme.
"%.3f".format (1)
ne retourne pas 1.000, mais échoue. "%.3f".format (1.0)
ou 1f est nécessaire. Sinon, vous obtenez un java.util.IllegalFormatConversionException: f != java.lang.Integer
OriginalL'auteur Ben Dilts | 2011-11-20
Vous devez vous connecter pour publier un commentaire.
Formateur par défaut utilisé par printf semble être un générique qui n'ont pas tous le même support que
[DecimalFormat][1]
. Vous pouvez instancier une mise en forme personnalisée, le long de ces lignes:Voir: http://docs.oracle.com/javase/tutorial/java/data/numberformat.html pour plus d'informations.
OriginalL'auteur huynhjl
"%.3f".format(1)
va jeter unjava.util.IllegalFormatConversionException
en raison du mauvais type (Float
est prévu et vous donner unInt
).Même si vous utilisez
"%.3f".format(1.0)
, vous obtiendrez1.000
.Vous pouvez utiliser une méthode comme suit pour obtenir le résultat attendu :
Cette méthode retourne le format attendu basé sur le type d'argument.
OriginalL'auteur David
La façon de se débarrasser de l'ensemble des zéros après le formatage?
OriginalL'auteur themel