1

もしも NSString sample = @"1sa34hjh#@";
Float 64 floatsample = [sample floatValue];

何が起こるのですか?floatsample には何が含まれていますか?

4

1 に答える 1

6

ドキュメントを読んでください。

戻り値

文字列の先頭にある空白をスキップした float としてのレシーバーのテキストの浮動小数点値。オーバーフローの場合は HUGE_VAL または –HUGE_VAL を返し、アンダーフローの場合は 0.0 を返します。

受信者が浮動小数点数の有効なテキスト表現で始まっていない場合も、 0.0を返します。

戻り値を把握する最善の方法は、戻り値を自分で確認することです。小さなプログラムを作成し、拡張子 .m のファイルとして保存できます。サンプルは次のとおりです。

// floatTest.m
#import <Foundation/Foundation.h>

int main() {
    NSString *sample = @"1sa34hjh#@";
    float floatsample = [sample floatValue];
    printf("%f", floatsample);
    return 0;
}

コマンドラインで clang を使用してコンパイルし、Foundation フレームワークとリンクします。

clang floatTest.m -framework foundation -o floatTest

次に、実行可能ファイルを実行し、出力を確認します。

./floatTest

印刷された値は1.000000です。あなたの質問に答えるために、文字列が数字で始まる場合、文字列の数字部分が取得され、float に変換されます。上記と同じルールがオーバーフローまたはアンダーフローに適用されます。

ファイルを作成するのが面倒だと思われる場合は、最小主義の Cocoa プログラミングに関するこのブログ記事をお勧めします。

于 2011-02-11T04:37:11.477 に答える