Explication Pourquoi est-ce pas un double de cette Q pointue & A !:
j'ai rencontré ce problème en ce qui concerne la mise en œuvre mineure Objective-C et le type NSNumber a varier la précision en virgule flottante et Je devais juste savoir ce qui se passe vraiment et que dois-je faire pour résoudre ce problème. Cela pointé Q & A ne suffit pas à ma question avec sa réponse.NSNumbers et sa représentation valeur problème
Remarque: Cela ne concerne pas l'utilisation des types pour les valeurs. J'ai été troublé de comprendre le comportement de NSNumbers
.
J'ai cette méthode très simple qui utilise essentiellement NSNumber
:
+ (NSNumber*)addNumber:(NSNumber*)firstNumber withSecondNumber:(NSNumber*)secondNumber {
NSNumber *result = [NSNumber numberWithDouble:([firstNumber doubleValue] + [secondNumber doubleValue])];
NSLog(@"Result: %@", result); // This will print out our result for testing
return result;
}
Donc, si j'appelle cette méthode avec des paramètres comme suit:
[Fundamentals addNumber:[NSNumber numberWithDouble:5.0]
withSecondNumber:[NSNumber numberWithDouble:3.5]];
Sortie imprimée: 8,5 ---> Mais ce que j'attendais
Mais si j'appelle cette méthode avec les paramètres suivants:
[Fundamentals addNumber:[NSNumber numberWithDouble:50.0]
withSecondNumber:[NSNumber numberWithDouble:36.54]];
Il imprime sur les éléments suivants: 86,53999999999999 ---> Ce qui me trouble et encore m'a étonné et questions que mon cerveau jusqu'à ce que ça fait mal! :(
Note:. Non seulement lors de l'impression, même Débogueur aussi montre la représentation de valeur telle qu'elle est imprimée au-dessus
quelqu'un peut-il expliquer cette s'il vous plaît
Merci à l'avance
!
http://floating-point-gui.de/ – jtbandes
Avez-vous essayé d'utiliser [NSString stringWithFormat: @ "%. 1f", YourDoubleNumber]? Devrait résoudre votre précision – OhadM
Nope! En fait, je ne veux pas formater la sortie en tant que chaîne. J'ai besoin que la représentation de la valeur réelle soit naturelle! –