需要创建一个带有 2 个小数位的 NSDecimalNumber 以存储在核心数据中,但最后一个小数点 (0) 被删除

Need to create a NSDecimalNumber with 2 decimal places to store in Core Data but last decimal (0) is being cut

我正在尝试创建一个 NSDecimalNumber 以基于包含值 11.90 的字符串在核心数据中存储货币值。我想保留 2 位小数,但 0 被忽略,它总是变成 11.9 作为 NSDecimalNumber。我尝试使用行为协议舍入并添加比例,但它对我不起作用。

它是否按设计工作,我应该在从 Core Data 检索 11.9 时只使用格式化程序添加 0 还是我遗漏了任何步骤?

谢谢。

    NSDecimalNumberHandler *behavior = [[NSDecimalNumberHandler alloc] initWithRoundingMode:NSRoundPlain
                                                                                              scale:2
                                                                                   raiseOnExactness:NO
                                                                                    raiseOnOverflow:NO
                                                                                   raiseOnUnderflow:NO
                                                                                raiseOnDivideByZero:NO];

    [NSDecimalNumber setDefaultBehavior:behavior];


    NSDecimalNumber *priceDecimal;

    NSDictionary *locale = [NSDictionary dictionaryWithObject:currentLocaleSeparator forKey:NSLocaleDecimalSeparator];
    priceDecimal = [NSDecimalNumber decimalNumberWithString:price locale:locale];
    priceDecimal = [priceDecimal decimalNumberByRoundingAccordingToBehavior:behavior];

对,格式化程序是正确的做法。您必须区分存储的十进制数的精度(这似乎工作正常)及其表示或格式。

我用货币制作了很多应用程序 - 我总是发现使用 64 位整数简单地计算美分(或百单位)更容易和方便。

查看 NSNumberFormatterminimumFractionDigits