为什么字符串的%g
格式只处理一个浮点数中的六个数字,然后变成科学计数法?有没有其他方法可以显示类似于%g
格式的浮点数但允许超过六个数字?
-(IBAction)numberPressed:(id)sender {
if (decimalChecker == 1) {
currentDecimal = currentDecimal*10+ (float)[sender tag];
decimaledNumberString = [[NSString alloc] initWithFormat:@"%.17g.%.17g", currentNumber, currentDecimal];
calculatorScreen.text = decimaledNumberString;
currentDecimaledNumber = [decimaledNumberString floatValue];
NSLog(@"regular");
} else {
currentNumber = currentNumber*10+ (float)[sender tag];
calculatorScreen.text = [[NSString alloc] initWithFormat:@"%.17g", currentNumber];
NSLog(@"regular");
}
}
如果我按“5”八次而不是55555555,我会得到55551782或类似的东西。我如何将其修复到我得到所需的八个五而不是疯狂的数字?
答案 0 :(得分:2)
插入句点和数字以指定要显示的最大有效位数,例如%.17g
表示17位有效数字。如您所见,默认值为六。
答案 1 :(得分:1)
根据http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Strings/Articles/FormatStrings.html#//apple_ref/doc/uid/20000943,iOS字符串格式使用与C printf()
相同的占位符,其指定g
/ G
表示FP值,指数表示法非常大/ f
仅使用非指数表示的小值。
http://en.wikipedia.org/wiki/Printf_format_string#Format_placeholders