0

さて、現地通貨にフォーマットされたラベルを更新する数値フィールド (0 ~ 9 の値を持つボタン) を持つアプリがあります。ラベルはユーザーの小数点を自動的に配置するため、形式は 0.00 です。iPhone はユーロなどの他のほとんどの通貨を 0,00 としてフォーマットするため、これは問題です。

地域の通貨形式を検出する方法はありますか ([設定] > [国際] > [地域形式])?

次に、それに応じて if ステートメントを作成します。

現在のテンキー コード:

NSString *digit = sender.currentTitle;
numberField.text = [numberField.text stringByAppendingString:digit];

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGroupingSeparator:@""];
[numberFormatter setMaximumIntegerDigits:4];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setMaximumFractionDigits:2];

numberField.text = [numberField.text stringByReplacingOccurrencesOfString:@"."    withString:@""];
NSDecimalNumber *currency = [[NSDecimalNumber decimalNumberWithString:numberField.text]   decimalNumberByDividingBy: [NSDecimalNumber decimalNumberWithString:@"100"]];
numberField.text = [numberFormatter stringFromNumber:currency];

11 行目に小数点が挿入されていることがわかります。コンマに変更すると、0,00 形式が正しく機能します。

そして変換:

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string = [f stringFromNumber:[NSNumber numberWithFloat:[numberField.text floatValue]]];

numberField.text=string;
4

5 に答える 5

2

- - - - - - - - - 編集 - - - - - - - - -

@lnafziger にはおそらくもっと効率的な方法があると思います。NSLocaleDecimalSeparatorキーに加えて、キーNSLocaleGroupingSeparatorNSLocaleCurrencySymbolキーも役立つ場合があります。

お役に立てれば!

あなたが使用することができます:

NSString *locale = [NSLocale currentLocale] localeIdentifier];
if(locale isEqualToString: @"en_US"){

    //Set Device Currency to American Dollars

}
else if(locale isEqualToString: @"fr_FR"){

    //Set Device Currency to Euros

}
else if(locale isEqualToString: @"en_AU"){

    //Set Device Currency to Australian Dollars

}

の詳細については、こちらNSLocaleを参照してください。

お役に立てれば!

于 2012-06-08T00:24:43.587 に答える
2

現在のロケールの小数点区切り文字を取得するには、次を使用します。

NSLocale *loc       = [NSLocale currentLocale];
NSString *separator = [loc objectForKey:NSLocaleDecimalSeparator];
于 2012-06-08T00:33:14.290 に答える
1

(ユーザー定義の設定から) 現地通貨の US$ または € を取得するには、次のスニペットを使用します。

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *dec = [f stringFromNumber:[NSNumber numberWithFloat:100.01]];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string = [f stringFromNumber:[NSNumber numberWithFloat:100.01]];

NSString *currency = [string stringByReplacingOccurrencesOfString:dec withString:@""];
currency =  [currency stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"local currency:%@",currency);
于 2012-12-11T09:34:32.693 に答える
0

Iphone はhnu985jmpl895662方法の形式です。これに対する答えは次のとおりです。第 4 世代と現在の識別可能な 7 。笑 JK IDK

于 2013-04-12T14:55:26.873 に答える
0

これは数値を現地通貨文字列に変換します [NSNumberFormatter localizedStringFromNumber:dec numberStyle:NSNumberFormatterCurrencyStyle]

于 2014-01-24T03:08:55.213 に答える