1

在 Cocoa 应用程序中,我使用了大量“带有数字格式化程序的文本字段”对象。这些对象通过在适当的地方添加逗号来改进数据的表示,因此数字“123456”表示为“123,456”。当数字是浮点类型并使用以下代码填充时,这很有帮助:

[OutR2C2 setFloatValue:MyVariable2 ];

那么,数字“123456.567”表示为“123,456.567”,数字“123456.5”表示为“123,456.5.”。

我需要能够指定小数点后总是有两位数,如 123,456.50 或 123,456.56 等。在此对象的属性中,我看不到任何设置小数点数的方法。

在使用“带有数字格式化程序的文本字段”对象时如何做到这一点?

4

3 回答 3

2

你可能有这样的事情:

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

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];

紧随其后的是:

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

您需要将其切换为:

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

这将使您的数字始终显示两位小数。

或者,您可以使用:

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

如果你想在小数点前显示一个 0,如果它是一个 <1 的值。(例如 0.44 将显示为 0.44)。

于 2012-06-27T03:51:07.783 回答
1

我感谢在这个问题上的帮助。该响应帮助我找到了如下所示的解决方案。我将其发布为问题的答案,因此它可能会帮助其他有相同问题的人

在这个例子中,一个文档上有两个 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 回答
0

我也很欣赏答案和解决方案。

对于那些在 Swift 中寻找解决方案的人来说,这里可能就是其中之一。

class NumberFormatterWithFraction_2 : NumberFormatter {

  required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    minimumIntegerDigits = 1
    minimumFractionDigits = 2
    maximumFractionDigits = 2
    roundingMode = .halfDown
  }

}

Then, specify the class defined above as a Custom class of Number Formatter in the Interface Builder of recent Xcode. That would resemble [formatter setFormat:@"##0.00"];

For details, https://developer.apple.com/documentation/foundation/numberformatter

于 2017-08-22T11:22:09.130 回答