1

NSStringをfloat値に変換していますが、ログに記録される結果は次のとおりです。

2,146.952 as a float is 2.000000

カンマを使用すると、float値が切り捨てられるようです。doubleValueを使用すると、同じようになります。

これを実現する方法はあります2146.952か?

4

2 に答える 2

5

NSNumberFormatterを使用する必要があります。
形式が常にshow(ソース:Server api)の場合は、decimalSeparatorをに設定し、groutingSeparatorをに設定し.ます,

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setDecimalSeparator:@"."];
[numberFormatter setGroupingSeparator:@","];

NSNumber *number = [numberFormatter numberFromString:numberString];

文字列の形式がユーザー設定(キーボードからの入力)に何らかの形で依存する場合は、代わりにロケールを設定してください

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[NSLocale currentLocale]];
NSNumber *number = [numberFormatter numberFromString:numberString];

次のようなロケールを設定した場合、2番目のソリューションは最初のケースにも使用できます

[numberFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
于 2013-03-04T12:32:48.233 に答える
3

試す、

1) 文字列からカンマを削除します。

NSString * str = [str stringByReplacingOccurencesOfString:@"," withString:@""];

2) 文字列から float 値を次のように取得します。

float f = [str floatValue];
于 2013-03-04T12:25:41.280 に答える