gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:26:21 25 4
gpt4 key购买 nike

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

它是否按设计工作,在从 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 .

关于ios - 需要创建一个带有 2 个小数位的 NSDecimalNumber 以存储在核心数据中,但最后一个小数点 (0) 被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29002398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com