0

そこで、Objective Cで電卓をコーディングし、有効数字と小数点以下4桁のみが必要だったため、ディスプレイを.4gでフォーマットしました。これは問題なく動作します:)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;
}

次に、これら2つのオプションを組み合わせて次のようにしました。

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 に答える