303 votes

Faire en sorte qu'un flotteur n'affiche que deux décimales

J'ai la valeur 25.00 dans un float mais lorsque je l'imprime à l'écran, c'est le suivant 25.0000000 .
Comment puis-je afficher la valeur avec seulement deux décimales ?

1voto

shaunak Points 21

Dans l'objectif -c, si vous voulez afficher une valeur flottante en 2 nombres décimaux, passez l'argument indiquant le nombre de décimales que vous voulez afficher. e.g 0.02f imprimera 25.00 0.002f affichera 25.000

1voto

Ryan Points 1830

Voici quelques méthodes pour formater dynamiquement en fonction d'une précision :

+ (NSNumber *)numberFromString:(NSString *)string
{
    if (string.length) {
        NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
        f.numberStyle = NSNumberFormatterDecimalStyle;
        return [f numberFromString:string];
    } else {
        return nil;
    }
}

+ (NSString *)stringByFormattingString:(NSString *)string toPrecision:(NSInteger)precision
{
    NSNumber *numberValue = [self numberFromString:string];

    if (numberValue) {
        NSString *formatString = [NSString stringWithFormat:@"%%.%ldf", (long)precision];
        return [NSString stringWithFormat:formatString, numberValue.floatValue];
    } else {
        /* return original string */
        return string;
    }
}

par exemple

[TSPAppDelegate stringByFormattingString:@"2.346324" toPrecision:4];

\=> 2.3453

[TSPAppDelegate stringByFormattingString:@"2.346324" toPrecision:0];

\=> 2

[TSPAppDelegate stringByFormattingString:@"2.346324" toPrecision:2];

\=> 2,35 (arrondir)

0voto

loretoparisi Points 1206

Si vous avez besoin d'une valeur flottante également :

NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];
float floatTwoDecimalDigits = atof([formattedNumber UTF8String]);

0voto

Rinju Jain Points 1115
 lblMeter.text=[NSString stringWithFormat:@"%.02f",[[dic objectForKey:@"distance"] floatValue]];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X