54

まったくの初心者の質問ですが、これは私を怒らせています!私はこれを試しています:

myInt = [myFloat integerValue]; 

しかし、本質的にintegerValueはfloatでは機能しないというエラーが表示されます。

どうすればいいのですか?

4

6 に答える 6

129

C スタイルのキャスト構文が Objective C で機能すると確信しているので、それも試してみてください。

int myInt = (int) myFloat;

少なくとも、コンパイラの警告を黙らせるかもしれません。

于 2008-11-13T10:38:43.737 に答える
12

どうしたの:

int myInt = myFloat;

これはデフォルトの丸め規則を使用することに注意してください。これはゼロに向かっています (つまり、-3.9f は -3 になります)。

于 2008-11-13T10:32:52.673 に答える
8
int myInt = (int) myFloat;

私にとってはうまくいきました。

int myInt = [[NSNumber numberWithFloat:myFloat] intValue];

まあ、それは1つのオプションです。回り道が好きなら、NSString を使ったものも考えられます。複雑な代替手段があるのに、なぜ簡単なのでしょうか? :)

于 2011-08-06T23:31:23.717 に答える
7

C も使用できますlroundf(myFloat)


非常に役立つヒント: Xcode のエディターで、次のようにコードを入力します。

myInt = roundf(someFloat);

次に、コントロール/右クリックして定義roundfジャンプします(または単にコマンドクリックします)。

すると、利用可能な機能の非常に長いリストが明確に表示されます。(全部覚えるのは無理なので、この裏ワザを使ってください。)

たとえば、手元の例では、それlrintfがあなたが望むものである可能性が高いです。

さらなるヒント: これらの多くの機能に関するドキュメントを入手すること。Terminal.app (または任意のシェル - Xcode とは関係なく、通常の Terminal.appのみ) で入力するだけman lrintfで、完全な情報が得られます。それが誰かを助けることを願っています。

于 2013-09-29T01:10:20.217 に答える
2

アンワインドをサポートするために、Objective-C は完全に新しい言語ではなく、C のスーパーセットであることを思い出してください。

通常の古い ANSI C で実行できることはすべて、Objective-C でも実行できます。

于 2008-11-13T21:48:19.810 に答える