首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DecimalFormat更改。由,

DecimalFormat更改。由,
EN

Stack Overflow用户
提问于 2018-01-19 05:12:53
回答 1查看 42关注 0票数 0

我使用下面的代码尝试在Android中将Double格式化为字符串:

代码语言:javascript
复制
DecimalFormat decimalFormat = new DecimalFormat("USD ###,###,##0.00");

String result = decimalFormat.format(87359.0);

我正在寻找“美元87,359.00”,但我得到“美元87.359,00”在一些设备。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-19 06:10:19

DecimalFormat是本地化的。如果未指定Locale,则DecimalFormat将使用用户在其设备上设置的Locale

如果出于某种原因,您希望覆盖用户为其设备设置的Locale,则可以执行以下操作:

代码语言:javascript
复制
private String formatMyCurrency(double d){
    String result = "";
    try{
        String pattern = "USD ###,###,##0.00";
        //Use which ever locale you need
        //If you would rather have $ instead of USD you can use NumberFormat.getCurrencyInstance(Locale.US) and adjust your pattern
        NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
        DecimalFormat df = (DecimalFormat)nf;
        df.applyPattern(pattern);

        result = df.format(d);
    }
    catch(Exception ex){
        Log.e(TAG, ex.getMessage());
    }
    return result;
}

或者你可以这样做(,但是,我不推荐这样做!):

代码语言:javascript
复制
private String formatMyCurrency(double d){
    String result = "";
    try{
        String pattern = "USD ###,###,##0.00";
        String sep = ".,";
        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
        dfs.setDecimalSeparator(sep.charAt(0));
        dfs.setGroupingSeparator(sep.charAt(1));
        DecimalFormat df = new DecimalFormat(pattern, dfs);

        result = df.format(d);
    }
    catch(Exception ex){
        Log.e(TAG, ex.getMessage());
    }
    return result;
}

免责声明

上面的代码是在标准文本编辑器中编写的-因此,一些方法名称可能不正确,或者代码中的某个位置可能存在语法错误

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48330384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档