Java / Android:从字符串到十进制或int

时间:2015-12-12 16:56:56

标签: java android

千分隔符:“。” (点) 小数分隔符:“,”(逗号)。 我住在意大利。

我从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,对我来说毫无意义。

非常感谢。

2 个答案:

答案 0 :(得分: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做一些很棒的东西!

答案 1 :(得分: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
    }