gpt4 book ai didi

iphone - 如何使用自定义 NSDecimalSeparator 值创建自定义区域设置?

转载 作者:行者123 更新时间:2023-12-03 19:13:04 25 4
gpt4 key购买 nike

我遇到了问题

+ (NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString locale:(NSDictionary *)locale

因为我想以编程方式提供非常高精度的值,以便最初没有浮点错误,所以苹果为我提供了依赖不稳定区域设置的唯一选择。

所以文档说非常加密:

Parameters: ... locale A dictionary that defines the locale (specifically the NSDecimalSeparator) to use to interpret the number in numericString.

Discussion The locale parameter determines whether the NSDecimalSeparator is a period (as is used, for example, in the United States) or a comma (as is used, for example, in France).

好吧,在文档中搜索 NSDecimalSeparator 后,什么也没找到。网上搜索了一下,发现这个东西已经“deprecated”了。所以目前我做了这样危险的事情:

NSLocale *usLoc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDecimalNumber *num = [NSDecimalNumber decimalNumberWithString:str locale:usLoc];

所以我想知道:如果他们真的需要这个奇怪的语言环境来完成这样的关键事情(我以编程方式添加字符串,没有用户输入),我不能以某种方式创建一个自己的语言环境吗?该参数需要一个 NSDictionary,所以想法:

我可以从 -initWithLocaleIdentifier:@"en_US"的语言环境字典中创建一个 NSMutableDictionary,然后编辑这个 %?&§! NSDecimalSeparator 字段?

还有一件让我头疼的事情:为什么参数要求一个 NSDictionary,而我必须在其中传递一个 NSLocale 对象?还是我的代码错误? (未经测试,因为我的应用程序目前完全搞砸了;-))

最佳答案

似乎没有办法添加/修改 NSLocale 实例中的值;您只能获取用户的逻辑区域设置(currentLocaleautoupdatingCurrentLocale)、系统区域设置,而无需用户在系统首选项中进行任何更改 (systemLocale),或系统知道的任何其他命名区域设置 (initWithLocaleIdentifier)。

NSLocale 响应 objectForKey: 消息,该消息与 NSDictionary 使用的消息相同;这就是为什么您可以使用 NSLocale,即使该方法调用 NSDictionary 也是如此。由于 NSDecimalNumber 可能只会查看一个值,NSDecimalSeparator,我有一种感觉,您可以使用该值创建一个 NSDictionary 对象键并将其作为 locale 参数传递,但这将来可能会中断,因为 NSDecimalNumber 需要一个完整的 NSLocale 实例,并且可能是更改为检查其他 key 。

您正在以编程方式创建这些字符串,对吧?因此您可以控制使用的小数点分隔符。我的建议是使用 .,并获取 en_US 语言环境:

NSLocale *us = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

小数点分隔符每次都一定是.

关于iphone - 如何使用自定义 NSDecimalSeparator 值创建自定义区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340336/

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