十进制格式分隔符

Posted

技术标签:

【中文标题】十进制格式分隔符【英文标题】:Decimal Format separator 【发布时间】:2016-02-02 05:17:44 【问题描述】:

当西班牙的小数点分隔符以逗号 , 显示时,我在格式化十进制值以在西班牙语(以及其他欧洲语言)中进行本地化时遇到问题。 如何获得小数点分隔符为点.

这是我用来格式化十进制数的代码

    DecimalFormat twoDecimalForm = null;
     twoDecimalForm = new DecimalFormat("#.##");
     DecimalFormatSymbols.getInstance().setDecimalSeparator('.');
    String valueInDecimal = twoDecimalForm.format(0.005 * progressValue);
//Exception here 
 Log.d(TAG,"valueInDecimal" + Double.valueOf(valueInDecimal));

我得到的是逗号 , 而不是点 . 解决方法可以将逗号替换为.

但是还有其他解决方案吗?

【问题讨论】:

许多国家/地区使用逗号作为小数分隔符,因此最好只允许这样做:docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html @KenWolf 我在返回java.lang.NumberFormatException: Invalid double: 简单,不要转换为数字:Log.d(TAG,"valueInDecimal = " + valueInDecimal.replace(",", "."); 你在开玩笑......你做数学运算,比如 Double c = Double a (= 8.97) * Double b (= 1.5)。结果:c = 13.455 然后将 c 转换为字符串并显示它用点替换逗号。什么东西这么难理解? @FrankN.Stein Cool :)。谢谢。现在正在做同样的事情。 【参考方案1】:

如果您从 Web 获取数据,然后要求您的 Web 开发人员根据您的要求传递数据,那么您的问题就会得到解决,或者您可以使用替换选项。

【讨论】:

这是安卓项目。如果语言环境设置为西班牙/欧洲,则值将以逗号分隔。 您是如何在应用程序中获取数据的?它已经存储在应用程序中还是从服务器端获取? 我以十进制格式解析的数据将小数分隔符作为逗号,这导致我们错误的数学运算 在进行数学运算之前,您可以将 , 替换为 .我问你从哪里获取数据?

以上是关于十进制格式分隔符的主要内容,如果未能解决你的问题,请参考以下文章

在Textview中显示千位分隔符和十进制格式的数字

使用 ToString() 格式化十进制值以将逗号作为千位分隔符,其中小数位数未知

使用小数分隔符格式化数字/字符串

mySQL格式数字输出,千位分隔符

更改小数点分隔符

从Android中的十进制数中删除分组分隔符