Total question de débutant, mais cela me rend fou! J'essaye ceci:
myInt = [myFloat integerValue];
mais j'obtiens une erreur en disant essentiellement integerValue ne fonctionne pas sur les flottants.
Comment fait-on ça?
Je suis presque sûr que la syntaxe de transtypage de style C fonctionne dans Objective C, alors essayez aussi:
int myInt = (int) myFloat;
Cela pourrait faire taire un avertissement du compilateur, au moins.
quel est le problème avec:
int myInt = myFloat;
gardez à l’esprit que vous utiliserez la règle d’arrondi par défaut, qui est proche de zéro (c’est-à-dire que -3.9f devient -3)
int myInt = (int) myFloat;
A bien fonctionné pour moi.
int myInt = [[NSNumber numberWithFloat:myFloat] intValue];
Eh bien, c'est une option. Si vous aimez le détour, je pourrais penser à certains utilisant NSString. Pourquoi facile, quand il y a une alternative compliquée? :)
Vous pouvez également utiliser le lroundf(myFloat)
de C.
Un conseil incroyablement utile: dans l'éditeur de Xcode, tapez votre code comme par exemple
myInt = roundf(someFloat);
puis contrôlez/cliquez avec le bouton droit de la souris sur roundf
et Aller à la définition _ (ou cliquez simplement sur Commande).
Vous verrez alors clairement la très longue liste des fonctions disponibles à vous. (Il est impossible de se souvenir de tous, utilisez donc cette astuce.)
Par exemple, dans l'exemple en question, il est probable que lrintf
soit ce que vous voulez.
Un autre conseil: pour obtenir de la documentation sur ces nombreuses fonctions. Dans votre Terminal.app (ou tout shell - rien à voir avec Xcode, uniquement le Terminal.app normal), tapez simplement man lrintf
et vous obtiendrez des informations complètes. J'espère que ça aide quelqu'un.
Pour faciliter le déroulement, rappelez-vous qu’Objective-C est un sur-ensemble de C, plutôt qu’un langage complètement nouveau.
Tout ce que vous pouvez faire avec l’ancien ANSI C normal peut être fait en Objective-C.
Voici une approche plus concise qui a été introduite en 2012:
myInt = @(myFloat).intValue;