SORU
19 ŞUBAT 2011, CUMARTESİ


Nasıl nokta/nokta virgülden DecimalFormat ondalık ayırıcıyı değiştirmek için?

Güzel ve okunabilir dizelere BigDecimal değerleri dönüştüren bu küçük deli yöntemi var.

private String formatBigDecimal(BigDecimal bd){
    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(3);
    df.setMaximumFractionDigits(3);
    df.setMinimumIntegerDigits(1);
    df.setMaximumIntegerDigits(3);
    df.setGroupingSize(20);
    return df.format(bd);
}

Benim değerler böyle yapar ancak, o da sözde gruplandırma ayırıcı "," üretir:

xxx,xxx

Bir nokta veya bir nokta olarak ayırıcı ihtiyacım var ve bir virgül değil. Kimse bu küçük bir başarı yapmak için nasıl bir ipucu var mı?

Ölümüne this ve özellikle this şimdi okudum ama bir şekilde bu işi halletmek için bulamıyorum. Yaklaşan bu yanlış yolda mıyım? Bunu yapmanın çok daha zarif bir yolu var mı? Belki farklı bir yerel numara gösterimleri, virgül beri hesaplar için bir çözüm bile Avrupa standartlarına göre mükemmel olur.

CEVAP
19 ŞUBAT 2011, CUMARTESİ


Ayırıcı ya da bir yerel ayarı veya DecimalFormatSymbols kullanarak değiştirebilirsiniz.

Eğer gruplandırma ayırıcı bir işaret olmak istiyorsanız, Avrupa yerel ayarları kullanabilirsiniz:

NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
DecimalFormat df = (DecimalFormat)nf;

Alternatif olarak DecimalFormatSymbols sınıf biçimlendirilmiş sayıları format yöntemi ile üretilen görünür simgeleri değiştirmek için kullanabilirsiniz. Bu sembolleri ondalık ayırıcının, gruplandırma ayırıcı, Eksi işareti, ve, diğerleri arasında: yüzde işareti vardır

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.'); 
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • snookie77

    snookie77

    2 Mart 2006
  • Willie D.

    Willie D.

    16 Aralık 2006