我正在尝试在我的应用中将此文本字段显示为输入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];
}
答案 0 :(得分:1)
您不能只将NSString
投射到NSNumber
。使用doubleValue
将NSString
转换为双倍:
current = [formatter stringFromNumber:@([current doubleValue])];
或者您可以使用NSNumberFormatter
将字符串转换为数字,如this answer