iOS - %G float只能处理六个数字

时间:2013-06-18 19:04:48

标签: ios objective-c

为什么字符串的%g格式只处理一个浮点数中的六个数字,然后变成科学计数法?有没有其他方法可以显示类似于%g格式的浮点数但允许超过六个数字?

编辑:我已经计算出%g的精度,即将%g转换为%。xg,其中x是指定的有效位数。但在这种情况下它并没有帮助我:

-(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或类似的东西。我如何将其修复到我得到所需的八个五而不是疯狂的数字?

2 个答案:

答案 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