0

int64_t に小数が含まれているものと、その数を知る必要があります。これは、if-else ステートメントに配置する必要があります。このコードを試しましたが、アプリがクラッシュします。

        NSNumber *numValue = [NSNumber numberWithInt:testAnswer];
        NSString *string = [numValue stringValue];
        NSArray *stringComps = [string componentsSeparatedByString:@"."];
        int64_t numberOfDecimalPlaces = [[stringComps objectAtIndex:1] length];
        if (numberOfDecimalPlaces == 0) {
            [self doSomething];
            } else {
            [self doSomethingElse];
            }
4

1 に答える 1

0

あなたの質問はあまり意味がありません。NSNumberからオブジェクトを作成しているため、 は小数点以下の桁数を格納できないためint、小数点以下の桁数はありません。intコードがクラッシュする理由は、コンポーネントの配列が常に少なくとも 2 要素の長さであると想定しているためです (使用する場合objectAtIndex:1)。

これは良いですが、まだそれほど良くはありません:

NSString *answer = ...;   // From somewhere
NSArray *stringComps = [answer componentsSeparatedByString:@"."];
if ([stringComps count] == 0) {
    [self doSomething];
} else if [stringComps count] == 1) {
    [self doSomethingElse];
} else {
    // Error! More than one period entered
}

.これは、有効な数値ではなくピリオド ( ) が入力されているかどうかのみをテストするため、まだあまり良いテストではありません。

于 2013-06-17T07:31:07.473 に答える