web-dev-qa-db-ja.com

Objective Cでfloatをintに変換するにはどうすればよいですか?

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

myInt = [myFloat integerValue]; 

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

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

50
Nick Locking

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

int myInt = (int) myFloat;

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

124
unwind

どうしたの:

int myInt = myFloat;

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

11
Alnitak
int myInt = (int) myFloat;

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

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

まあ、それは1つのオプションです。回り道が好きな人は、NSStringを使用することを考えることができます。複雑な選択肢があるのに、なぜ簡単なのでしょうか? :)

8
Hermann Klecker

Cのlroundf(myFloat)を使用することもできます。


信じられないほど便利なヒント:Xcodeのエディターで、次のようにコードを入力します

myInt = roundf(someFloat);

次に、roundfおよび定義へのジャンプ(または単にコマンドクリック)を制御/右クリックします。

その後、利用可能な機能の非常に長いリストが明確に表示されます。 (すべてを覚えることは不可能なので、このトリックを使用してください。)

たとえば、手元の例では、lrintfが望みのものである可能性があります。

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

6
jmcharnes

巻き戻しをサポートするために、Objective-Cは完全に新しい言語ではなく、Cのスーパーセットであることを忘れないでください。

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

2

2012年に導入された、より簡潔なアプローチを次に示します。

myInt = @(myFloat).intValue;
0
Ben Leggiero