gpt4 book ai didi

ios - NSNumberFormatter numberFromString 十进制数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:59 25 4
gpt4 key购买 nike

我正在尝试使用 NSNumberFormatter 解析 NSString,如下所示。

NSNumberFormatter *myFormatter = [[[NSNumberFormatter alloc] init];
NSNumber *myNumber = [myFormatter numberFromString:@"42.00000"];

numberFromString 在模拟器而非设备上返回一个 NSNumber 对象。

小数点 (.00000) 导致返回值在设备上为 nil,因为解析 42(没有小数点)工作正常(在模拟器和设备上)。

我使用 NSNumberFormatter 的原因是,如果字符串不是有效数字(这对我不利 :p),它会返回 nil。 NSString doubleValue 不提供这种行为。此外,NSDecimalNumber decimalNumberWithString 没有完成这项工作,因为 [NSDecimalNumber decimalNumberWithString:@"4a2.00000"] 返回 4。

知道为什么这在设备上不起作用吗?

是语言环境吗?我尝试设置 myFormatter.numberStyle = NSNumberFormatterNoStyleNSNumberFormatterDecimalStyle 但它没有任何改变。

最佳答案

正如@rmaddy 在评论中所说,NSNumberFormatter 的小数点分隔符是取决于语言环境。如果你有一个固定的输入格式,以点作为小数点分隔符,您可以设置“POSIX 语言环境”:

NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
NSNumber *myNumber = [myFormatter numberFromString:@"42.00000"];

或者,您可以使用 NSScanner 来解析 double 值,例如描述这里:parsing NSString to Double

关于ios - NSNumberFormatter numberFromString 十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22413605/

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