J'ai la valeur 25.00
en a float
, mais quand je l'imprime à l'écran c'est le cas 25.0000000
.
Comment afficher la valeur avec seulement deux décimales?
objective-c
formatting
floating-point
mskfisher
la source
la source
Réponses:
Ce n'est pas une question de stockage du numéro, c'est une question de mode d'affichage. Lorsque vous le convertissez en chaîne, vous devez arrondir à la précision souhaitée, qui dans votre cas est de deux décimales.
Par exemple:
%.02f
indique au formateur que vous formatez un float (%f
) et que cela doit être arrondi à deux endroits et doit être complété par0
s.Par exemple:
la source
25
..@"%.f"
fait l'affaire. Ce qui est écrit ci-dessus ne l'est pas .@"%.*f", decimalPlaces, number
%03.f = 025
Voici quelques corrections-
Swift 3
Obj-C
etc...
la source
Vous pouvez également essayer d'utiliser NSNumberFormatter:
Vous devrez peut-être également définir le format négatif, mais je pense qu'il est assez intelligent pour le comprendre.
la source
J'ai fait une extension rapide basée sur les réponses ci-dessus
usage:
la source
En Swift Language, si vous voulez montrer que vous devez l'utiliser de cette façon. Pour affecter une valeur double dans UITextView, par exemple:
Si vous voulez afficher dans LOG comme comme object-c le fait en utilisant NSLog (), alors en Swift Language vous pouvez le faire de cette façon:
la source
Dans objective-c, si vous avez affaire à des tableaux de caractères réguliers (au lieu de pointeurs vers NSString), vous pouvez également utiliser:
OTOH, si vous voulez stocker cette valeur sur un tableau de caractères que vous pourriez utiliser:
la source
Le problème avec toutes les réponses est que la multiplication puis la division entraînent des problèmes de précision car vous avez utilisé la division. J'ai appris cela il y a longtemps en programmant sur un PDP8. La façon de résoudre ce problème est la suivante:
Ainsi, 15,6578 renvoie seulement 15,66 et non 15,6578999 ou quelque chose d'inattendu comme ça.
Le niveau de précision que vous souhaitez dépend de vous. Ne divisez pas le produit, multipliez-le par l'équivalent décimal. Aucune conversion de chaîne drôle n'est requise.
la source
dans l'objectif -c, vous voulez afficher la valeur flottante en 2 décimales, puis passez l'argument indiquant le nombre de décimales que vous souhaitez afficher, par exemple 0,02f affichera 25,00 0,002f affichera 25,000
la source
Voici quelques méthodes pour formater dynamiquement selon une précision:
par exemple
=> 2,3453
=> 2
=> 2,35 (arrondi)
la source
Une autre méthode pour Swift (sans utiliser NSString):
PS cette solution ne fonctionne pas avec le type CGFloat uniquement testée avec
Float
&Double
la source
Utilisez
NSNumberFormatter
avecmaximumFractionDigits
comme ci-dessous:Et vous obtiendrez
12.35
la source
Si vous devez également faire flotter la valeur:
la source
la source