1

Cocoaアプリケーションでは、多数の「数値フォーマッター付きテキストフィールド」オブジェクトを使用しています。オブジェクトは、必要に応じてコンマを追加することでデータの表示を改善し、数値「123456」が「123,456」として表示されるようにします。これは、数値がfloatタイプであり、次のコードを使用して入力されている場合に役立ちます。

[OutR2C2 setFloatValue:MyVariable2 ];

さて、番号「123456.567」は「123,456.567」として表示され、番号「123456.5」は「123,456.5」として表示されます。

表示されるすべての数値の123,456.50や123,456.56などのように、小数点以下2桁が常に存在することを指定できる必要があります。このオブジェクトのプロパティには、小数点以下の桁数を設定する方法がありません。

「数値フォーマッタ付きテキストフィールド」オブジェクトを使用しているときに、どうすればそれを行うことができますか?

4

3 に答える 3

2

おそらく次のようなものがあります。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];

これに続いて:

[formatter setFormat:@"###.##"];

それを次のように切り替える必要があります。

[formatter setFormat:@"###.00"];

これにより、数値は常に小数点以下 2 桁で表示されます。

または、次を使用できます。

[formatter setFormat:@"##0.00"];

値が 1 未満の場合に小数点の前に 0 を表示する場合。(たとえば、.44 は 0.44 と表示されます)。

于 2012-06-27T03:51:07.783 に答える
1

この質問に対する支援に感謝します。応答は、以下に示す解決策を見つけるのに役立ちました。質問への回答として投稿しているので、同じ質問をしている他の人に役立つかもしれません

この例では、ドキュメントに 2 つの NSTextField オブジェクトがあり、Interface Builder によって .xib ファイルに表示されます。

.h ファイルの @interface セクションに…

@interface MyViewController : NSWindowController {
@private

    IBOutlet NSTextField *Out1;
    IBOutlet NSTextField *Out2;

// other code goes here

}



In the .m file, in the @implementation section…


    @implementation MyViewController

    -(void)awakeFromNib
    {

    // set decimal places 

        NSNumberFormatter *numberFormatter =
        [[[NSNumberFormatter alloc] init] autorelease];
        NSMutableDictionary *newAttributes = [NSMutableDictionary dictionary];

        [numberFormatter setFormat:@"###,##0;(###,##0)"]; 
    //[numberFormatter1 setFormat:@"###,##0.00;(###,##0.00)"]; // for two decimal places.


        [newAttributes setObject:[NSColor redColor] forKey:@"NSColor"];
        [numberFormatter setTextAttributesForNegativeValues: newAttributes];


       [[Out1 cell] setFormatter:numberFormatter];
       [[Out2 cell] setFormatter:numberFormatter];



    }
于 2012-06-30T18:22:06.763 に答える