NSString的方法doubleValue给出了意想不到的结果

mbp*_*pro 0 iphone objective-c nsstring

我需要将NSString转换为double.如果此字符串本质上是整数,则结果为OK.如果string是十进制,也可能是组分隔符,则结果为false.任何分隔符之王(无论是"."还是",")字符串中的第一个字母总是用作小数分隔符.

我曾尝试用NSScanner做一些事情,但我根本不明白如何解决这个问题.

想法如下:无论我输入textfield整数,还是带或不带组分隔符的十进制数,我想得到正确的十进制数.

我很乐意得到任何帮助.

提前致谢!

Sve*_*ven 6

[string doubleValue]常规NSScanner总是使用.小数分隔符.本地化NSScanner使用当前语言环境中的小数分隔符.但是两个人都不知道如何对字符进行分组,因此它们不合适.

你必须用它NSNumberFormatter来做到这一点.最好在界面构建器中设置它,因为@Gobra说.但你也可以在这样的代码中执行此操作:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle: NSNumberFormatterDecimalStyle];
double value = [[formatter numberFromString: string] doubleValue];
Run Code Online (Sandbox Code Playgroud)

如果您需要知道字符串是否有效,您可以检查NSNumber返回的对象numberFromString:是否nil在发送doubleValue消息之前.