将 double 转换为 NSNumber,即使有 0 也保留小数部分

Convert double to NSNumber keeping decimal part even if there are 0s

我下载了一些包含价格的 Json 数据,下载的价格是双倍的,例如,如果我有 10.50,分配给我的变量的值将是 10.5,我怎样才能保留 0在第一个小数之后?

这是我用来创建 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];

任何尾随零都只是显示问题,它们不是数字的一部分。

你不能。当 JSON 文档包含 10.50 时,它 数字 10.5。 JSON 文档中的 10.5000000 或 10.50 或 10.5 之间没有区别。它们绝对是百分之一百相同的东西。

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

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

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

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

出于输出目的,您可以将 NSNumberFormatter 设置为恰好有 2 位小数,例如

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

这是为了显示两位小数。如果可能的话,您的 NSNumber 在内部当然会以一位数字存储。