2015-12-12 12 views
2

千位分隔符:「。」 (點) 小數分隔符:「,」(逗號)。 我住在意大利。Java/Android:從字符串到十進制或int

我從API得到這個值(這是一個字符串):

"balance":"1254.00". 

在一個情況下,我需要將其轉換成一個整數值:

1.254 

沒有小數部分(如果它不是零,沒有舍入或舍入)。

在另一種情況下,我可以有(這是一個字符串):

"balance":"1234.56" 

而且在這種情況下,我需要

1.234,56 

要瘋了幾個功能,沒有得到我的目標。

E.g.我想:

NumberFormat numberFormat = new DecimalFormat("#,##"); 
BigDecimal balance_numeric = new BigDecimal(this.raw_balance.replaceAll(",", "")); 
balance = String.valueOf(numberFormat.format(balance_numeric)); 

並獲得了第一種情況(1254)的12,54,沒有意義的我。

非常感謝。

+0

http://stackoverflow.com/a/25412801/2338006 –

回答

0

該代碼幾乎不言自明。如果您需要幫助,請發表評論。 :)

DecimalFormat format = new DecimalFormat(); 
DecimalFormatSymbols sm = DecimalFormatSymbols.getInstance(); 
sm.setDecimalSeparator(','); 
sm.setGroupingSeparator('.'); 
format.setDecimalFormatSymbols(sm); 
System.out.println(format.format(1254.02)); 

編輯1

有一個alternative,我不知道。

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

你可以使用Locale來做很棒的東西!

0

如果我理解正確,API總是返回一個十進制數。如果小數部分爲零,則需要數字的整數部分。如果不是,你想要整個十進制數。

String s = "1234.00"; 
    Double d = new Double(s); 

    double f = d - d.longValue(); 
    if (f == .0) { 
     // format d.longValue() as int 
    } else { 
     // format d as double 
    } 
+0

API返回一個字符串...謝謝 – sineverba