0

問題が発生していますが、解決策が見つかりませんでした。ユーザーが数値を入力するテキストフィールドがあります。問題は、ユーザーが小数点以下の桁をゼロとして入力すると、取得されないことです。たとえば、-42.70は42.7として印刷されます。以下のコードを見つけてください

  NSNumberFormatter *_numberFormatter =[NSNumberFormatter new];
     _numberFormatter.maximumFractionDigits=2;
    _numberFormatter.minimumIntegerDigits=1;
    _numberFormatter.roundingMode=kCFNumberFormatterRoundCeiling;
    _numberFormatter.allowsFloats=YES;
    _numberFormatter.groupingSeparator=@",";
    _numberFormatter.usesGroupingSeparator=YES;
    _numberFormatter.groupingSize=3;
   _numberFormatter.minimum=[NSNumber numberWithInt:0];
    [_numberFormatter setLenient:YES];
    [_numberFormatter setUsesSignificantDigits:NO];

NSNumber *number = [nf numberFromString:combinedString];
    NSString *formattedString = [nf stringFromNumber:number];

フォーマットされた文字列は、最後に入力された場合は0なしで入力された値を出力しますが、42.78がそのまま印刷されるが、43.70は43.7として印刷されるなど、他の数字が存在する場合は正しい数値を印刷します。

いくつかのパラメータの設定が不足していますか?ヘルプが必要です

前もって感謝します

4

3 に答える 3

2

両方を設定する

_numberFormatter.maximumFractionDigits = 2;
_numberFormatter.minimumFractionDigits = 2;

常に小数点記号の後に2桁を印刷する場合。

于 2013-03-06T09:28:43.380 に答える
0

私たちの側からゼロを追加するために操作を行う必要があることがわかりました。iOSは奇妙な方法で動作し、それを許可していません。以下は私のコードです。他の人にも役立つことを願っています。

NSArray *formatArr = [combinedString componentsSeparatedByString:@"."];
    NSString *str = [formatArr lastObject];
    NSString *code;
    if ([str length] >0) {
        code = [[formatArr lastObject] substringFromIndex: [str length] - 1];
        if ([str isEqualToString:@"00"])
        {

        }
        else
        {
            if ([combinedString hasSuffix:@".0"])
            {
                formattedString=[formattedString stringByAppendingString:@".0"];
            }
            else if ([code isEqualToString:@"0"]) {
                formattedString = [formattedString stringByAppendingString:@"0"];
            }
        }
    }
    else
    {
        if ([combinedString hasSuffix:@".0"])
        {
            formattedString=[formattedString stringByAppendingString:@".0"];
        }
    }

Combinedstringは、ユーザーが入力している入力です。「。」をチェックしています。最後の桁がゼロかどうかを確認します。ゼロの場合は、自分の数字からゼロを追加します。これで、ユーザーは43.5ではなく43.50を入力すると表示されます。

于 2013-03-06T10:47:02.567 に答える
0

あなたはこれを使うことができます:

NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setPositiveFormat:@"0.##"];
NSNumber *n = [NSNumber numberWithFloat:47.78];
NSLog(@"%@", [fmt stringFromNumber:n]);

47.78を印刷します

于 2013-03-06T09:22:48.607 に答える