www.91084.com

GVKun编程网logo

更改DecimalFormat语言环境(如何更改语言环境)

20

本文将介绍更改DecimalFormat语言环境的详细情况,特别是关于如何更改语言环境的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Decimal

本文将介绍更改DecimalFormat语言环境的详细情况,特别是关于如何更改语言环境的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于DecimalfFormat、DecimalFormat、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

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

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 类基本使用

/*
 * 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 类的用法


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 类的用法的相关知识,请在本站进行查询。

本文标签: