1

常にドットの後に2桁の小数桁がある123.00のような単純な形式でNSDecimalNumberを作成しようとしています。NSFormatterや、文字列からfloatを変換し、この文字列からNSDecimalNumberを作成するなど、他の多くの方法を試してみましたが、機能しません。問題は、NSStringやその他の形式ではなく、この形式のNSDecimalNumberのみが必要なことです。アドバイスありがとうございます、ポール

4

4 に答える 4

0

たぶん、分数の後に 2 桁だけの NSNumberDecimalを格納しようとしていたのでしょうか? もしそうならNSDecimalNumberBehaviorsあなたの友達です。同様のニーズがあり、以下を使用しました。

self.decimalHandlingBehaviorForApp = [NSDecimalNumberHandler
                                         decimalNumberHandlerWithRoundingMode:NSRoundUp
                                         scale:2 raiseOnExactness:NO 
                                         raiseOnOverflow:NO raiseOnUnderflow:NO
                                         raiseOnDivideByZero:YES];

編集:それを使用する例を追加

// update the taxable total first
self.cartTaxableTotal = [self.cartTaxableTotal decimalNumberByAdding:itemAdded.priceOfItem
                                                        withBehavior:self.decimalHandlingBehaviorForApp];
于 2014-07-26T00:35:54.343 に答える
0

以下のように2回の型キャスト操作を行うだけでよいと思います

   float value = 123.562;
   int myDigit = value;

myDigit変数に値123を与えます

 NSLog(@"MyDigit in Decimal = %d",myDigit);

出力は 10 進数の MyDigit = 123 です。

123.000 のような出力が必要な場合は、次のように記述します。

 float valueWithZiro = myDigit;

 NSLog(@"MyDigit with 000  == %3f",valueWithZiro);

出力は 10 進数の MyDigit = 123.000 です。

于 2012-11-24T11:37:21.603 に答える
0

このことからアイデアが得られるかもしれません。

float num = 123.1254546;
NSString *str = [NSString stringWithFormat:@"%.2f",num];
NSLog(@"%.2f %@",num,str);
于 2012-11-24T11:27:54.400 に答える
0

NSNumber と同様に、NSDecimalNumber にはフォーマット情報を含めることはできません。オブジェクト構造は単にそれをサポートしていません。これは数値を表すものであり、数値の表示方法ではありません。

それをフォーマットされた NSString に変換できます(これは望ましくないと言います)。しかし、あなたはあなたが求めていることをすることはできません。

NSNumberFormatter を使用して、フォーマットされた NSString に変換します。これは、小数点と桁区切り記号、表示する小数点以下の桁数、通貨記号などを指定できるオブジェクトです。

于 2014-05-14T21:01:27.123 に答える