51 votes

Comment puis-je convertir un float en int en Objective-C?

Newbie question, mais cela me rend fou! Je suis en train d'essayer ceci:

myInt = [myFloat integerValue]; 

mais j'obtiens une erreur en disant essentiellement integerValue ne fonctionne pas sur les flotteurs.

Comment dois-je faire?

125voto

unwind Points 181987

Je suis sûr que C-style coulée de syntaxe fonctionne en Objective-C, donc essayez aussi:

int myInt = (int) myFloat;

Il pourrait silence un avertissement du compilateur, au moins.

12voto

Alnitak Points 143355

quel est le problème avec:

int myInt = myFloat;

gardez à l'esprit cette allons utiliser la règle d'arrondi par défaut, qui est vers zéro (c'est à dire -3.9 f devient -3)

8voto

Hermann Klecker Points 8461
int myInt = (int) myFloat;

A bien fonctionné pour moi.

int myInt = [[NSNumber numberWithFloat:0.883f] intValue];

Eh bien, c'est une option. Si vous aimez le détour, je pouvais penser de certains à l'aide de NSString. Pourquoi facile, quand il y a un complexe d'alternative? :)

7voto

jmcharnes Points 120

Vous pouvez également utiliser du C lroundf(myFloat).


Un incroyablement utile astuce: Dans Xcode de l'éditeur, tapez votre code comme le disent les

myInt = roundf(someFloat);

puis cliquez sur le mot "roundf" et de Sauter à la définition.

Vous allez alors voir clairement la très longue liste des fonctions disponibles pour vous. (Il est impossible de vous souvenir de tous, alors il suffit d'utiliser cette astuce.)

Par exemple, dans l'exemple à part, il est probable que "lrintf" est ce que vous voulez.

Une autre astuce: pour obtenir de la documentation sur ces nombreuses fonctions. Dans votre Terminal.application (ou n'importe quel environnement - rien à voir avec Xcode, juste la normale Terminal.app), tapez simplement "homme lrintf" et il vous donnera plein d'infos. Espérons que cela aide quelqu'un.

2voto

Matthew Schinckel Points 15596

À l'appui de vous détendre, n'oubliez pas que l'Objective-C est un sur-ensemble de C, plutôt qu'une langue complètement nouvelle.

Tout ce que vous pouvez faire régulièrement de l'ancien ANSI C peut être fait en Objective-C.

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