首页 > 解决方案 > 将 NSString 转换为双精度 - Objective-C

问题描述

我对将 NSString 转换为 double 感到困惑,有时它可以工作,有时它不会。

//eg: NSString *string = @"0,50"

一种)

double d = [string doubleValue];
// -> d is 0.00

b)

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:2];
NSNumber *num = [formatter numberFromString:string];
double d = [num doubleValue];
// -> d is <null>

我还能尝试什么?为什么有时会起作用?

先感谢您!

标签: iosobjective-c

解决方案


In NSNumberFormatterDecimalStyle ,(逗号)用于分隔数字组(千、百万等),而不是小数点。这更多是一个地区问题。使用标准小数点的语言环境。

- -编辑 - -

语言环境是给定环境的语言设置,用于将许多值表示为字符串(或相反)。因此,请尝试使用,用作小数点的语言环境(例如fr法语)。NSNumberFormatter有一个名为locale修改转换策略的属性。


推荐阅读