如何在文本字段中获得科学记数法?

时间:2013-03-26 03:01:49

标签: objective-c cocoa-touch nsstring nsnumber nsnumberformatter

我正在尝试在我的应用中将此文本字段显示为输入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 个答案:

答案 0 :(得分:1)

您不能只将NSString投射到NSNumber。使用doubleValueNSString转换为双倍:

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

或者您可以使用NSNumberFormatter将字符串转换为数字,如this answer

中所述