【问题标题】:Android: BigDecimal always show number up to 2 decimal placesAndroid:BigDecimal 始终显示最多 2 位小数
【发布时间】:2012-12-26 14:39:52
【问题描述】:
String TotalAmount= "";

假设我有 TotalAmount = 10, or 10.1 or 10.11 or 10.11111

BigDecimal Amount = new BigDecimal(amount);

我想要Amount这种模式#.##

10 -> 10.00
10.1 -> 10.10
10.11 -> 10.11
10.11111 -> 10.11

【问题讨论】:

    标签: android bigdecimal number-formatting


    【解决方案1】:

    你可以试试java.text.NumberFormat,

    NumberFormat nf = NumberFormat.getNumberInstance();
    nf.setMaximumFractionDigits(2);
    nf.setMinimumFractionDigits(2);
    String res = nf.format(Amount);
    System.out.println(res);
    

    【讨论】:

    • 出现错误 12-26 19:57:02.357: E/AndroidRuntime(15870): 致命异常: main 12-26 19:57:02.357: E/AndroidRuntime(15870): java.lang。 IllegalArgumentException 12-26 19:57:02.357: E/AndroidRuntime(15870): 在 java.text.NumberFormat.format(NumberFormat.java:313) 12-26 19:57:02.357: E/AndroidRuntime(15870): 在 java .text.DecimalFormat.format(DecimalFormat.java:732) 12-26 19:57:02.357: E/AndroidRuntime(15870): at java.text.Format.format(Format.java:133)
    • 金额应该是 BigDecimal 而不是字符串
    • 现在您的代码正在运行,但问题是 BigDecimal 没有显示“.00”部分,导致问题未解决
    • @SyedZahidAli 我用 BigDecimal 尝试了所有 4 个输入:10、10.1、10.11、10.111,它只返回所需的结果。我不明白'BigDecimal 没有显示“.00”'
    【解决方案2】:

    自己解决了

    BigDecimal TotalAmount= new BigDecimal(myAmount);
    BigDecimal Amount = TotalAmount.divide(new BigDecimal(1),2, RoundingMode.HALF_UP);
    

    【讨论】:

      【解决方案3】:

      您可以使用DecimalFormat(类似于 NumberFormat 但使用 BigDecimal)

      【讨论】:

        猜你喜欢
        • 2014-05-03
        • 2016-06-01
        • 2013-01-29
        • 2011-09-02
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多