2015-04-29 43 views
1

我下载了一些Json数据,其中有一个价格,价格获得双倍下载,例如,如果我有10.50分配给我的变量的值将是10.5,我如何在第一个十进制数之后保留0?转换成NSNumber保留小数部分,即使有0s

这是我用来创建的NSNumber代码:

NSNumber *numPrice = jsonElement[@"Price"]; //the json is 10.50 but numPrice becomes 10.5 

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

[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundUp]; 

NSString *numberString = [formatter stringFromNumber:numPrice]; 
+2

你有没有试过[formatter setMinimumFractionDigits:2];用于显示两位十进制数 – Volker

+1

@Volker到目前为止,您只有有效的“答案”。将它作为一个发布。 – rmaddy

+1

谢谢@Volker这工作完美:)如果你发布它作为答案我会接受它 – Signo

回答

4

对于输出的目的,你可以设置你的NSNumberFormatter具有完全相同2十进制数字像

[formatter setMinimumFractionDigits:2]; 
[formatter setMaximumFractionDigits:2]; 

这是显示两个小数。如果可能的话,你的NSNumber在内部将被存储一个数字。

1

任何尾随零是简单的显示问题,他们是没有号码的一部分。

+0

OP已经这样做。 @Volker的评论在这里是正确的解决方案。 – rmaddy

+0

对,我不应该添加关于格式化的最后部分,删除。 – zaph

0

你不行。当一个JSON文档包含10.50时,它的的数字10.5。在JSON文档中,10.5000000或10.50或10.5之间没有区别。他们绝对是百分之百同样的事情。

您可以随意以任何方式显示此号码。

0

如果你想在保存为NSNumber后显示两位小数的数字,你必须做的事情是将它们打印成带有两位小数的浮点数。类似的东西:

NSNumber *numPrice = jsonElement[@"Price"]; //the json is 10.50 but 

NSString *numberString = [NSString stringWithFormat:@"%0.2f", numPrice.floatValue]; 
相关问题