web-dev-qa-db-fra.com

Objective-C: Convertir la valeur double entière en chaîne sans perdre de données

J'ai la double valeur suivante: 0.000900137869045636 Que j'aimerais convertir en NSString.

J'ai essayé le code suivant, mais quoi qu'il arrive, il arrondit la valeur à ceci: 0.000900138

[NSString stringWithFormat:@"%.20lf", [currentLocation coordinate].latitude];

Que dois-je faire pour conserver le double numéro tel quel?

Je vous remercie.

16
thedp

Créez un NSNumber en utilisant 

NSNumber *myDoubleNumber = [NSNumber numberWithDouble:myDouble];

Alors appelez 

[myDoubleNumber stringValue];

39
m177312

Réponse courte: utilisez %.18lf - testé avec 0.000900137869045633 -> 0.000900137869045639. Mais ne vous y trompez pas, cela est précis, cela ne fonctionne que parce que les chiffres sont arrondis.

1
CRD

Il ne semble pas y avoir de problème avec votre code, pour autant que je puisse voir: j'ai juste essayé ce qui suit et 

int main(int argc, const char * argv[])
{

    double foo = 0.000900137869045636;
    NSLog([NSString stringWithFormat:@"%.20lf", foo]);

    return 0;
}

la sortie du journal est:

2013-05-10 14:00:18.492 Test[71101:303] 
0.00090013786904563598

Vous ne savez donc pas quel est votre problème, mais ce n’est pas dans la création de NSString.

0
Ahmed Masud