【问题标题】:Format BigDecimal number with commas upto 2 decimal places用逗号格式化 BigDecimal 数字,最多保留 2 个小数位
【发布时间】:2021-02-03 10:27:19
【问题描述】:

我想用逗号和 2 个小数位格式化 BigDecimal 数字。 如果 BigDecimal 数字中的十进制值为 0,那么我也想删除尾随零。 例如 金额为 20000.00,应格式化为 20,000 金额为 167.50,应格式化为 167.50 金额为 20000.75,应格式化为 20,000.75

我用过这个方法-

public static String getNumberFormattedString(BigDecimal bigDecimal) {
        if (bigDecimal != null) {
            NumberFormat nf = NumberFormat.getInstance(new Locale("en", "IN"));
            nf.setMinimumFractionDigits(0);
            nf.setMaximumFractionDigits(2);
            nf.setGroupingUsed(true);
            return nf.format(bigDecimal);
        }
        return "";
    }

这不会为大十进制输入 167.50 返回正确的输出。 格式化输出为 167.5

【问题讨论】:

    标签: java android formatting bigdecimal


    【解决方案1】:

    您可以使用NumberFormat 来满足您的需求。这是我使用的功能:

       public static String GenerateFormat(Double value) {
            if (value == null) return "";
            NumberFormat nf = NumberFormat.getInstance(new Locale("de", "DE"));
            nf.setMinimumFractionDigits(0);
            nf.setMaximumFractionDigits(2);
            nf.setGroupingUsed(true);
            return nf.format(value);
        }
    

    在此,您可以看到我提供了 Locale 作为 NumberFormat 的参数。每个国家/地区都有自己的数字格式标准,您可以使用此语言环境new Locale("en", "US") 来实现您想要的。在setMaximumFractionDigits 中,您可以放置​​所需的小数位数,在您的情况下为 2。

    编辑

    由于你的情况,试试这个:

       public static String GenerateFormat(Double value) {
            if (value == null) return "";
            NumberFormat nf = NumberFormat.getInstance(new Locale("de", "DE"));
            if (value%1 == 0) nf.setMinimumFractionDigits(0);
            else nf.setMinimumFractionDigits(2);
            nf.setMaximumFractionDigits(2);
            nf.setGroupingUsed(true);
            return nf.format(value);
        }
    

    【讨论】:

    • 我已经编辑了这个问题。你能检查一下吗
    • 您可以将 minimumFractionDigits 设置为 2,然后您将始终拥有 2 位数字。另外,什么是“IN”作为第二个参数?为什么不是“美国”?
    • "IN" 代表印度。此外,如果我将 minimumFractionDigits 设置为 2,那么对于输入 20000.00,输出将为 20,000.00。但我希望输出为 20,000
    • 很高兴能帮上忙,请将其标记为已解决并接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多