4

何らかの理由で、比較ロジックが正しく機能していません... 2 つの NSDecimalNumber オブジェクトを比較しません。うまくいくこともあれば、うまくいかないこともあります。本当に奇妙です。if ステートメントは、一部のコンパイルでは機能しますが、機能しない場合もあります。これは正しい方法ですか?

データは、次のような 2 ポイントの 10 進数である json ファイルからのものです。63.32

これが正しく機能しないのはなぜですか?

NSError * error;
    NSDictionary * json = [NSJSONSerialization JSONObjectWithData:responceData options:kNilOptions error:error];
    NSArray * latestPrice = [json objectForKey:@"data"];
    NSLog(@"Latest price %@", latestPrice);

    NSNumber * value = [(NSDictionary*)[latestPrice objectForKey:@"last_offer"] objectForKey:@"display"];

    NSString * val = [[NSString alloc] initWithFormat:@"%@", value];
    NSString * valFinal = [val stringByTrimmingCharactersInSet:[NSCharacterSet symbolCharacterSet]];
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:valFinal];
    NSLog(@"%@", number);
    NSString * val2 = [[NSString alloc] initWithString:@"44.14"];
    NSDecimalNumber *number2 = [NSDecimalNumber decimalNumberWithString:val2];
    if(number2 >= number){
    NSLog(@"ds");
    }

json 値を同じ小数点を持つローカル値と比較する必要があります。

4

1 に答える 1

6

NSDecimalNumberはオブジェクトです。メモリ アドレスを比較しようとしました。のインスタンス メソッドを
使用します。compare:NSDecimalNumber

if ([number compare:number2] == NSOrderedAscending)

NSDecimalNumber クラス リファレンス

于 2013-03-30T01:26:12.653 に答える