0

因此,我在 Objective C 中编写了一个计算器,并将显示格式设置为 .4g,因为我只需要有效数字和 4 个小数位。这很好用:) 当它显示更长的数字(如 234,000)时,我希望它不显示 2.34E+05 等。我允许它自动调整标签中的文本大小,所以我知道这不仅仅是标签太小。是否有一段代码可以让它显示实际数字而不是科学记数法?

4

1 回答 1

1

%f使用而不是格式化%g不会使用标准形式

看看这个规范


编辑1:

我找到了这个答案来帮助四舍五入。

-(float) round:(float)num toSignificantFigures:(int)n {
    if(num == 0) {
        return 0;
    }

    double d = ceil(log10(num < 0 ? -num: num));
    int power = n - (int) d;

    double magnitude = pow(10, power);
    long shifted = round(num*magnitude);
    return shifted/magnitude;
}

然后我结合这两个选项得到:

NSLog(@"%.0f", [self round:number toSignificantFigures:4]); 

编辑2:

那这个呢:

- (NSString *) floatToString:(float) val {
    NSString *ret = [NSString stringWithFormat:@"%.5f", val];
    unichar c = [ret characterAtIndex:[ret length] - 1];
    while (c == 48 || c == 46) { // 0 or .
        ret = [ret substringToIndex:[ret length] - 1];
        c = [ret characterAtIndex:[ret length] - 1];
    }
    return ret;
}

我没有对此进行测试,但它看起来好像将小数限制为 5,然后删除任何尾随零或小数点。

[来源]

于 2012-08-13T08:48:45.940 回答