0

为什么%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 或类似的东西。我怎样才能将它修复到我想要的八个五而不是疯狂的数字?

4

2 回答 2

2

插入句点和数字以指定您希望显示的有效数字的最大数量,例如%.17g17 个有效数字。如您所见,默认值为 6。

于 2013-06-18T19:22:57.510 回答
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

于 2013-06-18T19:18:11.320 回答