0

Я пытаюсь получить это текстовое поле в своем приложении для отображения в научной нотации после ввода 8 символов (вроде встроенного приложения калькулятора). У меня все работает правильно, за исключением случаев, когда оно должно отображаться в научной нотации, оно просто показывает «0.0».Как получить научную нотацию в текстовом поле?

Что не так с моим кодом?

NSString *current; 
NSString *str = (NSString*)[sender currentTitle]; //sender is in the method header 
if([current isEqualToString:@"0"]) { 
    current = str; 
} else if (current.length < 8){ 
    current = [current stringByAppendingString:str]; 
} else { 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterScientificStyle]; 
    current = [formatter stringFromNumber:(NSNumber*)current]; 
} 

ответ

1

Вы не можете просто бросить NSString к NSNumber. Используйте doubleValue для преобразования NSString к двойному:

current = [formatter stringFromNumber:@([current doubleValue])]; 

Или вы можете использовать NSNumberFormatter для преобразования строк в числа, как описано в this answer

+0

Теперь, используя код, который вы мне дали, ничего не происходит после того, как 8 символов вставлено. –

+1

Если вы выполните код с помощью отладчика, вы попадете в последний блок 'else'? – Sebastian

+0

@coryginsberg: проверьте свои if-утверждения. Вероятно, вы должны проверить 'str', а не' current'. –

Смежные вопросы