2

我想将值设置Key110.00本身而不是10

            NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:
                                 [NSDecimalNumber decimalNumberWithString:@"10.00"],
                                 [NSDecimalNumber decimalNumberWithString:@"10.19"],nil]
                                 forKeys:[NSArray arrayWithObjects:@"Key1",@"Key2",nil]];


            NSLog(@"Value For Key1 NSDecimalNumber %@",[dict valueForKey:@"Key1"]);
            NSLog(@"Value For Key1 float %f",[[dict valueForKey:@"Key1"] floatValue]);

            NSLog(@"Value For Key2 NSDecimalNumber %@",[dict valueForKey:@"Key2"]);
            NSLog(@"Value For Key2 float %f",[[dict valueForKey:@"Key2"] floatValue]);

这是我从控制台获得的日志

    2013-05-16 12:43:23.316 SampleTest[6569:19d03] Value For Key1 NSDecimalNumber 10
    2013-05-16 12:43:23.771 SampleTest[6569:19d03] Value For Key1 float 10.000000
    2013-05-16 12:43:24.263 SampleTest[6569:19d03] Value For Key2 NSDecimalNumber 10.19
    2013-05-16 12:43:25.195 SampleTest[6569:19d03] Value For Key2 float 10.190000

谁能帮我吗???

提前致谢..

4

2 回答 2

1

如果您只需要一个具有十进制值精度的格式化字符串。您可以使用

NSString *str = [NSString stringWithFormat:@"%.2f",[[dict valueForKey:@"Key1"] floatValue]];
NSLog(@"str - %@",str);

str 将始终具有精度为 2 位的字符串。

希望这会有所帮助并且很简单。

于 2013-05-16T08:34:54.043 回答
0

如果我理解正确,您想控制NSDecimalNumber对象的输出格式。
CocoaNSNumberFormmatter为此目的提供了该类。它允许您在不修改实际值的情况下自定义数字的字符串表示形式。

NSDecimalNumber如果您必须处理需要高精度的数字,这是一个不错的选择。例如,在处理货币时。

我修改了您的示例以输出存储在以下位置的第一个值的格式化版本dict

NSDictionary* dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:
                                                          [NSDecimalNumber decimalNumberWithString:@"10.00"],
                                                          [NSDecimalNumber decimalNumberWithString:@"10.19"],nil]
                                                 forKeys:[NSArray arrayWithObjects:@"Key1",@"Key2",nil]];
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setAllowsFloats:YES];
[formatter setAlwaysShowsDecimalSeparator:YES];
[formatter setFormat:@"#,##0.00"];
NSString* formattedValue = [formatter stringFromNumber:[dict valueForKey:@"Key1"]];
NSLog(@"Value For Key1 %@",formattedValue);
于 2013-05-16T08:17:16.933 回答