Para birimi değerlerini biçimlendirme

Flash Player 10.1 ve üstü, Adobe AIR 2.0 ve üstü

Para birimi değerlerini gösterme biçimleri de sayı biçimleri kadar farklılık gösterir. Örneğin, bazı yerel ayarlarda $123456.78 değeri şu şekilde gösterilir:

Yerel ayar

Sayı Biçimi

en-US (İngilizce, ABD)

$123,456.78

de-DE (Almanca, Almanya)

123.456,78 $

en-IN (İngilizce, Hindistan)

$ 1,23,456.78

Para birimi biçimlendirme, sayı biçimlendirmedeki faktörlerin aynısını ve aşağıdaki diğer faktörleri içerir:

  • Para birimi ISO kodu. Kullanılmakta olan yerel ayarın USD veya EUR gibi üç harfli ISO 4217 para birimi kodu.

  • Para birimi sembolü. Kullanılan geçerli yerel ayarın $ veya € gibi para birimi sembolü veya dizesi.

  • Negatif para birimi biçimi. Para birimi miktarının sayısal kısmına göre para birimi sembolünün ve negatif sembolünün veya parantezlerin konumunu tanımlar.

  • Pozitif para birimi biçimi. Para birimi miktarının sayısal kısmına göre para birimi sembolünün konumunu tanımlar.

CurrencyFormatter sınıfını kullanma

CurrencyFormatter sınıfı, sayısal değerleri belli bir yerel ayarın kurallarına göre para birimi dizeleri ve biçimlendirilmiş sayılar içeren dizelere biçimlendirir.

Yeni bir CurrencyFormatter nesnesi somutlaştırdığınızda, para birimini geçerli yerel ayarın varsayılan para birimine ayarlar.

Aşağıdaki örnekte, Almanca yerel ayarları kullanılarak oluşturulmuş bir CurrencyFormatter nesnesinin, para birimi tutarlarını Euro cinsinden kabul ettiği gösterilmektedir:

var cf:CurrencyFormatter = new CurrencyFormatter( "de-DE" ); 
trace(cf.format(1234567.89)); // 1.234.567,89 EUR

Çoğu durumda, bir yerel ayarın varsayılan para birimine bağlı kalmamalısınız. Kullanıcının varsayılan yerel ayarı desteklenmiyorsa, CurrencyFormatter sınıfı yedek bir yerel ayar atar. Yedek yerel ayarın varsayılan para birimi farklı olabilir. Bunun yanında, tutarlar kullanıcının yerel para biriminde olmasa bile, normal olarak para birimi biçimlerinin kullanıcınıza doğru görünmesini istersiniz. Örneğin, Kanadalı bir kullanıcı bir Alman şirketinin fiyatlarını Euro cinsinden, ancak Kanadalı tarzda biçimlendirilmiş halde görmek isteyebilir.

CurrencyFormatter.setCurrency() yöntemi kullanılacak tam para birimi dizesini ve para birimini belirtir.

Aşağıdaki örnekte para birimi tutarları Kanada’nın Fransız kısmındaki kullanıcılara Euro cinsinden gösterilmektedir:

var cf:CurrencyFormatter = new CurrencyFormatter( "fr-CA" ); 
cf.setCurrency("EUR", "€"); 
trace(cf.format(1234567.89)); // 1.234.567,89 EUR

Kesin para birimi sembolleri belirleyerek kafa karışıklığını önlemek için setCurrency() yöntemi de kullanılabilir. Örneğin:

cf.setCurrency("USD","US$");

format() yöntemi para birimi sembolü yerine varsayılan olarak üç karakterli ISO 4217 para birimi kodunu gösterir. ISO 4217 kodları açıktır ve yerelleştirilmeleri gerekmez. Ancak, çoğu kullanıcı ISO kodları yerine para birimi sembollerini görmeyi tercih etmektedir.

CurrencyFormatter sınıfı, biçimlendirilmiş bir para birimi dizesinin hangi sembolü kullanacağına karar vermenize yardımcı olabilir: dolar işareti veya Euro işareti gibi bir para birimi sembolü veya USD veya EUR gibi üç karakterli ISO para birimi. Örneğin, Kanada doları miktarı Kanada'daki kullanıcılar için $200 olarak görüntülenebilir. Ancak A.B.D'deki bir kullanıcı için CAD 200 olarak görüntülenebilir. Tutarın para birimi sembolünün, kullanıcının yerel ayarlarına göre belirsiz veya yanlış olup olmadığını belirlemek için formattingWithCurrencySymbolIsSafe() yöntemini kullanın.

Aşağıdaki örnekte, Euro cinsinden bir değer en-US yerel ayarlarına dönüştürülmektedir. Kullanıcının yerel ayarına bağlı olarak, çıktı dizesi ya ISO para birimi kodu ya da para birimi sembolü kullanır.

var cf:CurrencyFormatter = new CurrencyFormatter( "en-CA"); 
 
if (cf.formattingWithCurrencySymbolIsSafe("USD")) 
{ 
    trace(cf.format(1234567.89, true)); // $1,234,567.89 
} 
else 
{ 
    cf.setCurrency("USD", "$"); 
    trace(cf.format(1234567.89)); // USD1,234,567.89 
}

Para birimi değerleri içeren dizeleri ayrıştırma

CurrencyFormatter sınıfı yerel ayara özel biçimlendirme gereksinimlerine uyan bir girdi dizesinden de para birimi tutarını ve para birimi dizesini alabilir. CurrencyFormatter.parse() yöntemi, ayrıştırılmış tutarı ve para birimi dizesini burada gösterildiği gibi bir CurrencyParseResult nesnesine depolar:

var cf:CurrencyFormatter = new CurrencyFormatter( "en-US" ); 
var inputCurrencyString:String = "(GBP 123,56,7.890)"; 
var parseResult:CurrencyParseResult = cf.parse(inputCurrencyString); 
trace("parsed amount: " + parseResult.value); // -1234567.89 
trace("currencyString: " + parseResult.currencyString ); // GBP

Girdi dizesinin para birimi dizesi kısmı bir para birimi sembolü, bir para birimi ISO kodu ve başka metin karakterleri içerebilir. Para birimi dizesinin, negatif sayı göstergesinin ve sayısal değerin konumları negativeCurrencyFormat ve positiveCurrencyFormat özellikleriyle belirtilen biçimlerle aynı olmalıdır. Örneğin:

var cf:CurrencyFormatter = new CurrencyFormatter( "en-US" ); 
var inputCurrencyString:String = "Total $-123,56,7.890"; 
var parseResult:CurrencyParseResult = cf.parse(inputCurrencyString); 
trace("status: " + cf.lastOperationStatus ); // parseError 
trace("parsed amount: " + parseResult.value); // NaN 
trace("currencyString: " + parseResult.currencyString ); // 
cf.negativeCurrencyFormat = 2; 
parseResult = cf.parse(inputCurrencyString); 
trace("status: " + cf.lastOperationStatus ); // noError 
trace("parsed amount: " + parseResult.value); // -123567.89 
trace("currencyString: " + parseResult.currencyString ); // Total $                

Bu örnekte, girdi dizesinde eksi işareti ve sayının ardından bir para birimi dizesi bulunmaktadır. Ancak, en-US yerel ayarının varsayılan negativeCurrencyFormat değeri ilk önce negatif göstergenin gelmesi gerektiğini belirtmektedir. Sonuç olarak, parse() yöntemi bir hata oluşturur ve ayrıştırılmış değer NaN olur.

negativeCurrencyFormat özelliği para birimi dizesinin önce geleceğini belirtecek şekilde 2’ye ayarlandıktan sonra, parse() yöntemi başarılı olur.