7

iPhoneで10進数を2桁に丸めるにはどうすればよいですか?

例えば ​​、

  1. 5345 --> 53

  2. 570 -- > 57

  3. 89523 -- > 90

これにnsformatterを使用しようとしましたが、使用したコードは次のとおりです。

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumIntegerDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithInt:570]];

    [formatter release];
    NSLog(@"%@",numberstring);

丸めモードを別のオプションに変更した後でも、値を 70 として取得し続けます。これで私を助けてください

ありがとう、ヴィノード。

4

5 に答える 5

11

フォーマッタの代わりにこの単純なコードを使用してください。

myFloat = roundf(100 * myFloat) / 100.0;

役立つことを願っています。

または、これを使用できます

float roundedValue = round(2.0f * number) / 2.0f;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundDown];  
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]]; 
[formatter release];
于 2011-06-10T11:43:39.313 に答える
4

10 進数を切り上げようとしているので、実際にはこれに float を指定し、小数点以下の最大桁数を 2 に設定する必要があります。おそらくこれを探しているでしょう。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp];

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:570.57018]];

[formatter release];
NSLog(@"%@",numberString);
于 2011-06-10T11:21:06.103 に答える
0

Deepakの答えはおそらくまさにあなたが必要としているものですが、私はオプションのために別のオプションを提供しているだけです。NSNumber値を使用していると想定しているのでsomeNumber、例ではそのタイプになります。

NSString *numberString = [NSString stringWithFormat:@"%.2f", [someNumber floatValue]];
// this converts the NSNumber to a float, then formats the float in a string;
NSNumber *formattedNumber = [NSNumber numberWithFloat:[numberString floatValue]];
// this extracts the float from the string and puts it back as an NSNumber
于 2011-06-10T11:48:47.960 に答える
0

数値をCの小数点以下2 桁に丸めるこのリンクが役立つ場合があります。floatの結果をnsnumberに戻すことができます。

于 2011-06-10T11:24:13.030 に答える
0

整数を四捨五入する直接的な方法はないようです

しかし、あなたはまだそれを行うことができます。整数を小数に変換するために追加の作業を行う必要があり、「0」を削除するためのトリックが必要です。フロート値から。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp];
[formatter setMaximumFractionDigits:2];

int n = 570;
float f = [[NSString stringWithFormat:@"0.%d", n] floatValue];
NSNumber *number = [NSNumber numberWithFloat:f];
NSString *str = [formatter stringFromNumber:number];
[formatter setPositivePrefix:@"0."];
number = [formatter numberFromString:str];
[formatter release];
于 2011-06-10T12:06:40.043 に答える