Rakamları biçimlendirme

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

Sayısal değerlerin gösterilme biçimi, bölgeden bölgeye büyük farklılıklar gösterir. Örneğin, bazı yerel ayarlarda 123456.78 sayısı şu şekilde gösterilir:

Yerel ayar

Sayı Biçimi

en-US (İngilizce, ABD)

-123,456.78

de-DE (Almanca, Almanya)

-123.456,78

fr-FR (Fransa, Fransızca)

-123 456,78

de-CH (Almanca, İsviçre)

-123'456.78

en-IN (İngilizce, Hindistan)

-1,23,456.78

Çoğu Arapça yerel ayarları

123,456.78-

Sayı biçimlerini etkileyen çok sayıda faktör vardır:

  • Ayırıcılar. Tamsayı ile sayının kesirli kısımları arasına ondalık ayırıcı konulur. Bu bir nokta, virgül veya başka bir karakter olabilir. Grup ayırıcısı veya binlik ayırıcısı bir nokta, virgül ya da bölünemez boşluk ya da başka bir karakter olabilir.

  • Gruplandırma yöntemleri. Ondalık noktasının sol tarafındaki her bir grup ayırıcısı arasındaki basamak sayısı iki veya üç ya da başka bir değer olabilir.

  • Negatif sayı göstergeleri Negatif sayılar, sayının solunda veya sağında bulunan bir eksi işaretiyle ya da mali uygulamalarda parantez içinde gösterilebilir. Örneğin, negatif 19, -19, 19- veya (19) olarak gösterilebilir.

  • Virgülden önceki ve sonraki sıfırlar. Bazı kültürel geleneklerde gösterilen sayıların önüne veya ardına sıfır eklenir. Örneğin, 0,17 değeri diğer seçeneklerle birlikte ,17, 0,17 veya 0,170 olarak gösterilebilir.

  • Sayı karakteri grupları. Hintçe, Arapça ve Japonca dahil birçok dilde farklı sayı karakteri grupları kullanılır. flash.globalization paketi 0-9 rakamlarıyla eşleşen tüm sayı karakteri gruplarını destekler.

NumberFormatter sınıfı sayısal değerleri biçimlendirirken tüm bu faktörleri göz önünde bulundurur.

NumberFormatter sınıfını kullanma

NumberFormatter sınıfı, sayısal değerleri (int, unit veya Number tipi) belli bir yerel ayarın kurallarına göre biçimlendirir.

Aşağıdaki örnekte, bir sayıyı kullanıcının işletim sistemi tarafından sağlanan varsayılan biçimlendirme özelliklerini kullanarak biçimlendirmenin en kolay yolu gösterilmektedir:

var nf:NumberFormatter = new NumberFormatter(LocaleID.DEFAULT); 
trace(nf.formatNumber(-123456.789))

Sonuç, kullanıcının yerel ayarlarına ve kullanıcı tercihlerine göre farklılık gösterir. Örneğin, kullanıcının yerel ayarı fr-FR ise, biçimlendirilmiş değer şöyle olur:

-123.456,789

Bir sayıyı kullanıcının ayarlarına bağlı olmaksızın yalnızca belli bir yerel ayar için biçimlendirmek istiyorsanız, yerel ayar adını özel olarak ayarlayın. Örneğin:

var nf:NumberFormatter = new NumberFormatter("de-CH"); 
trace(nf.formatNumber(-123456.789));

Bu durumda sonuç şu şekildedir:

-123'456.789

formatNumber() yöntemi parametre olarak Number parametresini alır. NumberFormatter sınıfı girdi olarak int alan bir formatInt() yöntemine ve bir unit alan formatUint() yöntemine sahiptir.

NumberFormatter sınıfının özelliklerini bu örnekte gösterilen şekilde ayarlayarak, biçimlendirme mantığını açıkça kontrol edebilirsiniz:

var nf:NumberFormatter = new NumberFormatter("de-CH"); 
nf.negativeNumberFormat = 0; 
nf.fractionalDigits = 5; 
nf.trailingZeros = true; 
nf.decimalSeparator = ","; 
nf.useGrouping = false; 
trace(nf.formatNumber(-123456.789)); //(123456.78900) 

Bu örnek ilk olarak bir NumberFormatter nesnesi oluşturur ve ardından:

  • negatif sayı biçimini parantez içinde (mali uygulamalardaki gibi) kullanmak üzere ayarlar;

  • ondalık ayırıcıdan sonraki basamak sayısını 5 olarak ayarlar;

  • beş ondalık yer elde etmek üzere virgülden sonra sıfır kullanılması gerektiğini belirtir;

  • ondalık ayırıcıyı virgül olarak ayarlar;

  • biçimlendiriciye herhangi bir grup ayırıcısı kullanmamasını söyler.

Not: Bu özelliklerden bazıları değiştirildiğinde, elde edilen sayı biçimi artık belirtilen yerel ayarın tercih edilen biçimine uygun olmaz. Bu özelliklerden bazılarını yalnızca yerel ayarlar konusunda bilgi sahibi olmanız gerekmediğinde; takip eden sıfırların sayısı gibi bir biçimin tek bir açısı üzerinde ayrıntılı kontrole sahip olmanız gerektiğinde; veya kullanıcı değişimi doğrudan, örneğin Windows Denetim Masası üzerinden istediğinde kullanın.

Sayısal değer içeren dizeleri ayrıştırma

NumberFormatter sınıfı, yerele özel biçimlendirme gereksinimlerine uyan dizelerden sayısal değerler de alabilir. NumberFormatter.parseNumber() yöntemi bir dizeden tek bir sayısal değer alır. Örneğin:

var nf:NumberFormatter = new NumberFormatter( "en-US" ); 
var inputNumberString:String =  "-1,234,567.890" 
var parsedNumber:Number = nf.parseNumber(inputNumberString); 
trace("Value:" + parsedNumber); // -1234567.89 
trace("Status:" + nf.lastOperationStatus); // noError

parseNumber() yöntemi yalnızca sayılar ve işaret ve ayırıcılar gibi sayı biçimlendirme karakterleri içeren dizeleri işler. Dize diğer karakterleri içeriyorsa, bir hata kodu ayarlanır:

var nf:NumberFormatter = new NumberFormatter( "en-US" ); 
var inputNumberString:String =  "The value is 1,234,567.890" 
var parsedNumber:Number = nf.parseNumber(inputNumberString); 
trace("Value:" + parsedNumber); // NaN 
trace("Status:" + nf.lastOperationStatus); // parseError

Başka alfabetik karakterler içeren dizelerden sayı almak için, NumberFormatter.parse() yöntemini kullanın:

var nf:NumberFormatter = new NumberFormatter( "en-US" ); 
var inputNumberString:String = "The value is 123,456,7.890"; 
var parseResult:NumberParseResult = nf.parse(inputNumberString); 
trace("Value:" + parseResult.value); // 1234567.89 
trace("startIndex: " + parseResult.startIndex); // 14 
trace("Status:" + nf.lastOperationStatus); // noError

parse() yöntemi, value özelliğinde ayrıştırılmış sayısal değer bulunan bir NumberParseResult nesnesi gönderir. startIndex özelliği, bulunan ilk sayısal karakterin dizinini gösterir. Dizenin basamaktan önce ve sonra gelen kısımlarını almak için startIndex ve endIndex özelliklerini kullanabilirsiniz.