12

小数点以下2桁までの精度の数値文字列を作成しようとしていますが、残りの小数点は切り上げではなく切り捨てられています。例えば:

I have: 123456.9964

I want: 123456.99 -> Just want to trim rest of the decimal places

私が試したことは:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat: 123456.9964]];
 NSLog(@"%@", numberAsString);

丸めモードを「なし」に設定することはできません。トリミングされた10進数とともに、10進数スタイルのフォーマットを維持するために他に何ができますか?どんな助けでもありがたいです。ありがとう。

4

4 に答える 4

21

以下は私のために働きます:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
// optional - [numberFormatter setMinimumFractionDigits:2];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
NSNumber *num = @(123456.9964);
NSString *numberAsString = [numberFormatter stringFromNumber:num];
NSLog(@"%@", numberAsString);

出力は次のとおりです:123,456.99

問題の一部は、のnumberWithFloat:代わりにを使用することですnumberWithDouble:。番号の桁数が多すぎますfloat

于 2013-03-07T06:34:24.690 に答える
1

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

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble: 123456.9964]];
NSLog(@"%@", numberAsString);
于 2013-03-07T06:35:00.350 に答える
0
[numberFormatter setRoundingMode: NSNumberFormatterRoundDown];

このコードを使用してください。

于 2013-03-07T06:06:10.897 に答える
-1

round()を使用して、後で文字列に変換することもできます

var y = round(100 * 123456.8864) / 100

var x:String = String(format:"%.2f", y)
println("x: \(x)")

x:123456.89を出力し、8を9に丸めます。

于 2015-04-05T15:24:39.767 に答える