本文将介绍更改DecimalFormat语言环境的详细情况,特别是关于如何更改语言环境的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Decimal
本文将介绍更改DecimalFormat语言环境的详细情况,特别是关于如何更改语言环境的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于DecimalfFormat、DecimalFormat、DecimalFormat 类基本使用、DecimalFormat 类的用法的知识。
本文目录一览:更改DecimalFormat语言环境(如何更改语言环境)
我DecimalFormat
在Edittext的addTextChangedListener方法中已自定义,一切正常,但是当我更改语言(语言环境)时,我的addTextChangedListener无法正常工作。
double answer = inputDouble * counterToDouble;DecimalFormat df = new DecimalFormat("##.########");// df=(DecimalFormat)numberFormat;df.setRoundingMode(RoundingMode.DOWN);answer = Double.parseDouble(df.format(answer));unicoinsAmmount.setText(String.valueOf(df.format(answer)));
我搜索了我的问题并找到了NumberFormat
解决方案:
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
但我不知道如何使用此代码。
答案1
小编典典您可以尝试先转换为NumberFormat
,然后将其投射到DecimalFormat
Integer vc = 3210000;NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);DecimalFormat formatter = (DecimalFormat) nf;formatter.applyPattern("#,###,###");String fString = formatter.format(vc);return convertNumbersToEnglish(fString);
DecimalfFormat
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。 DecimalFormat 模式包含正数和负数子模式,例如 "#,##0.00;(#,##0.00)"。每个子模式都有前缀、数字部分和后缀。负数子模式是可选的;如果存在,则将用已本地化的减号(在多数语言环境中是 ''-'')作为前缀的正数子模式用作负数子模式。也就是说,单独的 "0.00" 等效于 "0.00;-0.00"。如果存在显式的负数子模式,则它仅指定负数前缀和后缀;数字位数、最小位数,其他特征都与正数模式相同。 用于无穷大值、数字、千位分隔符、小数分隔符等的前缀、后缀和各种符号可设置为任意值,并且能在格式化期间正确显示。但是,必须注意不要让符号和字符串发生冲突,否则分析是不可靠的。例如,为了让 DecimalFormat.parse () 能够区分正数和负数,正数和负数前缀或后缀必须是不同的。(如果它们相同,则 DecimalFormat 的行为就如同未指定负数子模式一样。)另一个示例是小数分隔符和千位分隔符应该是不同的字符,否则将不可能进行分析。 科学计数法 科学计数法中的数表示为一个尾数和一个 10 的几次幂的乘积,例如可将 1234 表示为 1.234 x 10^3。尾数的范围通常是 1.0 <= x < 10.0,但并非必需如此。可指示 DecimalFormat 仅通过某个模式 来格式化和分析科学计数法表示的数;目前没有创建科学计数法格式的工厂方法。在这个模式中,指数字符后面紧跟着一个或多个数字字符即指示科学计数法。示例:"0.###E0" 将数字 1234 格式化为 "1.234E3"。
指数字符后面的数字位数字符数给出了最小的指数位数。没有最大值。使用本地化的减号来格式化负数指数,不 使用模式中的前缀和后缀。这就允许存在诸如 "0.###E0 m/s" 等此类的模式。 最小和最大整数数字位数一起进行解释: 如果最大整数数字位数大于其最小整数数字位数并且大于 1,则强制要求指数为最大整数数字位数的倍数,并将最小整数数字位数解释为 1。最常见的用法是生成工程计数法,其中指数是 3 的倍数,如 "##0.#####E0"。使用此模式时,数 12345 格式化为 "12.345E3",123456 则格式化为 "123.456E3"。 否则通过调整指数来得到最小整数数字位数。示例:使用 "00.###E0" 格式化 0.00123 时得到 "12.3E-4"。 尾数中的有效位数是最小整数 和最大小数 位数的和,不受最大整数位数的影响。例如,使用 "##0.##E0" 格式化 12345 得到 "12.3E3"。要显示所有位数,请将有效位数计数设置为零。有效位数不会影响分析。 指数模式可能不包含分组分隔符。
符号 位置 本地化? 含义
0 数字 是 阿拉伯数字
数字字 是 阿拉伯数字,如果不存在则显示为 0
. 数字 是 小数分隔符或货币小数分隔符
- 数字 是 减号
, 数字 是 分组分隔符
E 数字 是 分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。
; 子模式边界 是 分隔正数和负数子模式
% 前缀或后缀 是 乘以 100 并显示为百分数
\u2030 前缀或后缀 是 乘以 1000 并显示为千分数
¤ (\u00A4) 前缀或后缀 否 货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符。
'' 前缀或后缀 否 用于在前缀或或后缀中为特殊字符加引号,例如 "''#''#" 将 123 格式化为 "#123"。要创建单引号本身,请连续使用两个单引号:"# o''''clock"。
DecimalFormat df = new DecimalFormat (); double data = 1234.56789; System.out.println ("格式化之前的数字:" + data); String;// 定义要显示的数字的格式 df.applyPattern (style);// 将格式应用于格式化器 System.out.println ("采用 style:" + style + "格式化之后:" + df.format (data));;// 在格式后添加诸如单位等字符 df.applyPattern (style); System.out.println ("采用 style:" + style + "格式化之后:" + df.format (data)); // 模式中的 "#" 表示如果该位存在字符,则显示字符,如果不存在,则不显示。; df.applyPattern (style); System.out.println ("采用 style:" + style + "格式化之后:" + df.format (data)); // 模式中的 "-" 表示输出为负数,要放在最前面; df.applyPattern (style); System.out.println ("采用 style:" + style + "格式化之后:" + df.format (data)); // 模式中的 "," 在数字中添加逗号,方便读数字; df.applyPattern (style); System.out.println ("采用 style:" + style + "格式化之后:" + df.format (data)); // 模式中的 "E" 表示输出为指数,"E" 之前的字符串是底数的格式, // "E" 之后的是字符串是指数的格式; df.applyPattern (style); System.out.println ("采用 style:" + style + "格式化之后:" + df.format (data)); // 模式中的 "%" 表示乘以 100 并显示为百分数,要放在最后。; df.applyPattern (style); System.out.println ("采用 style:" + style + "格式化之后:" + df.format (data)); // 模式中的 "\u2030" 表示乘以 1000 并显示为千分数,要放在最后。; // 在构造函数中设置数字格式 DecimalFormat df1 = new DecimalFormat (style); //df.applyPattern (style); System.out.println ("采用 style:" + style + "格式化之后:" + df1.format (data)); 涉及到设置小数点格式问题时,尽量少用 float,常因精度问题导致不不要的错误;尽量用 double 精度高于 float,也是默认类型。 .format (double value) 是将 格式化一个 double 值,以生成一个字符串。如果想将只在便会 double 还需要调用 Double.parseDouble () 方法将字符串转换成 double 类型数据。 Double.parseDouble () 和 Double.valueOf () 都可应将 String 行数据转换成浮点型,但是前者返回的是 double 数据类型,后者返回的是 Double 类的对象。 java 中无法将 String 类型数据强制转换成 double 型,(Double)String 无法编译通过。
DecimalFormat
1,#与0
public static void main(String[] args) {
DecimalFormat df1 = new DecimalFormat("#");
System.out.println(df1.format(888.88888));//889
DecimalFormat df2 = new DecimalFormat("#####");
System.out.println(df2.format(888.88888));//889
DecimalFormat df3 = new DecimalFormat("0");
System.out.println(df3.format(888.88888));//889
DecimalFormat df4 = new DecimalFormat("00000");
System.out.println(df4.format(888.88888));//00889
}
表示整数部分:一个#和多个#一样,都表示所有整数部分,但0比较特殊,当0的个数多于数字本身的时候,会用0补齐。
public static void main(String[] args) {
DecimalFormat df1 = new DecimalFormat("#.#");
System.out.println(df1.format(888.88888));//888.9
DecimalFormat df2 = new DecimalFormat("#.###");
System.out.println(df2.format(888.88888));//888.889
DecimalFormat df3 = new DecimalFormat("#.#######");
System.out.println(df3.format(888.88888));//888.88888
DecimalFormat df4 = new DecimalFormat("0.0");
System.out.println(df4.format(888.88888));//888.9
DecimalFormat df5 = new DecimalFormat("0.000");
System.out.println(df5.format(888.88888));//888.889
DecimalFormat df6 = new DecimalFormat("0.0000000");
System.out.println(df6.format(888.88888));//888.8888800
}
表示小数部分,一个#表示一位小数,一个0也表示一位小数,但当0的个数多于小数部分的时候,会用0补齐。(均四舍五入)
2,分隔
public static void main(String[] args) {
DecimalFormat df1 = new DecimalFormat(",###.#");
System.out.println(df1.format(8888888.88888));//8,888,888.9
DecimalFormat df2 = new DecimalFormat("#####,###.#");
System.out.println(df2.format(8888888.88888));//8,888,888.9
}
用逗号分隔整数部分,逗号后面有几个#表示每个几位用逗号分隔,与逗号前面的#无关
3 BigDecimal
public static void main(String[] args) {
DecimalFormat df5 = new DecimalFormat("#.00");
DecimalFormat df6 = new DecimalFormat("0.00");
System.out.println(df5.format(new BigDecimal("0.13")));//.13
System.out.println(df6.format(new BigDecimal("0.13")));//0.13
}
注意:BigDecimal整数部分为0的时候,整数format用#,小数format用0会导致没有0占位显示为“.13”
DecimalFormat 类基本使用
/*
* DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度
* 0 表示如果位数不足则以 0 填充
* # 表示只要有可能就把数字拉上这个位置
*
*/
public static void main(String[] args){
double pi=123.5678;
//取所有整数部分 124
System.out.println(new DecimalFormat("#").format(pi));
//强制保留两位小数 123.57
System.out.println(new DecimalFormat("#.00").format(pi));
pi=123.5;
//取所有整数部分 124
System.out.println(new DecimalFormat("#").format(pi));
//强制保留两位小数 123.50
System.out.println(new DecimalFormat("#.00").format(pi));
//强制保留两整数、两位小数 123.50
System.out.println(new DecimalFormat("00.00").format(pi));
//强制保留四整数、三位小数 0123.500
System.out.println(new DecimalFormat("0000.000").format(pi));
pi=0.9881;
//以百分比方式计数,并取两位小数 98.81%
System.out.println(new DecimalFormat("#.##%").format(pi));
//注意一点
pi=0.98;
System.out.println(new DecimalFormat("#.00").format(pi));
// 猜猜结果是什么? .98
//api中文帮助文档关于”#”的翻译是错误的,原文为“zero shows as absent”译为“如果为0,则不显示”。
//“#”可以理解为在正常的数字显示中,如果前缀与后缀出现不必要的多余的0,则将其忽略。
}
DecimalFormat 类的用法
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
DecimalFormat 包含一个模式 和一组符号
博文引字:http://www.cnblogs.com/lsun/archive/2011/06/22/2087116.html
符号含义:
0 一个数字
# 一个数字,不包括 0
. 小数的分隔符的占位符
, 分组分隔符的占位符
; 分隔格式。
- 缺省负数前缀。
% 乘以 100 和作为百分比显示
? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用
国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代
替十进制分隔符。
X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。
例子:
DecimalFormat df1 = new DecimalFormat("0.0");
DecimalFormat df2 = new DecimalFormat("#.#");
DecimalFormat df3 = new DecimalFormat("000.000");
DecimalFormat df4 = new DecimalFormat("###.###");
System.out.println(df1.format(12.34)); //12.3
System.out.println(df2.format(12.34)); //12.3
System.out.println(df3.format(12.34)); //012.340
System.out.println(df4.format(12.34)); //12.34
今天的关于更改DecimalFormat语言环境和如何更改语言环境的分享已经结束,谢谢您的关注,如果想了解更多关于DecimalfFormat、DecimalFormat、DecimalFormat 类基本使用、DecimalFormat 类的用法的相关知识,请在本站进行查询。
本文标签: