首页 > 编程知识 正文

formatnumber函数,sdformatter格式化

时间:2023-05-03 10:11:35 阅读:111306 作者:2439

一.官方API文档publicabstractclassnumberformatextendsformatnumberformat在抽象类中从format继承

numberformatistheabstractbaseclassforallnumberformats.thisclassprovidestheinterfaceformattingandparsingnumbers.number fors gwhichlocaleshavenumberformats,and what their names are。

NumberFormat是抽象的数字格式类。 此类提供了用于设置和解析数字格式的接口,NumberFormat提供了一种确定哪些语言环境具有数字格式以及其名称的方法。

numberformathelpsyoutoformatandparsenumbersforanylocale.yourcodecanbecompletelyindependentofthelocaleconventionsfordecimalpon oreventheparticulardecimaldigitsused,orwhetherthenumberformatisevendecimal。

无论数字格式是否为偶数,NumberFormat都可以帮助您创建完全独立于小数点、千位分隔符以及所使用的特定小数位数的区域设置表达式的代码,以分析任何语言的数字。

二. Number的实例numberformatformat=number format.getinstance (;

三.测试代码

公共类测试框架{

publicstaticvoidmain (字符串[ ] args ) {

testNumberFormatGetInstance (;

system.out.print ln-------- testnumberformatdigits-----testnumberformatdigits;

testNumberFormatDigits (

system.out.println-------- testnumberformatsetroundingmode------ testnumberformatsetroundingmode;

testnumberformatsetroundingmode (;

system.out.print ln-------------- testnumberformatparse--------------;

testNumberFormatParse (;

}

privatestaticvoidtestnumberformatgetinstance (

double d=23323.3323232323;

system.out.println (number format.getinstance ().format(d ) ); //23,323.332。 返回当前默认区域设置的“默认值”格式

system.out.println (number format (d.getcurrencyinstance ().format ) d ); //23,323.33。 返回当前默认区域设置的货币格式

system.out.println (number format (d.getnumber instance ().format ) ) d ); //23,323.332。 返回当前默认区域设置的“通用数字”格式

system.out.println (number format (d.getintegerinstance ().format ) d ); //23,323。 返回当前默认区域设置的整数格式

system.out.println (number format (d.getpercentinstance ().format ) ) d ); //2,332,333 % 返回当前默认区域设置的【百分比】格式

}

privatestaticvoidtestnumberformatdigits (

numberformatformat=number format.getinstance (;

format.setparseintegeronly (true; //设定数是否应该只作为整数进行分析? 此方法只影响分析,与格式无关

format.setminimumfractiondigits (2); //设定数值的【小数部分】并允许

的最小位数。这几个方法只影响格式化,与解析无关
        format.setMaximumFractionDigits(3);//设置数值的【小数部分】允许的最大位数
        format.setMinimumIntegerDigits(1);//设置数值的【整数部分】允许的最小位数
        format.setMaximumIntegerDigits(5);//设置数值的【整数部分】允许的最大位数

        System.out.println(format.format(123.1234));//123.123
        System.out.println(format.format(123.1000));//123.10
        System.out.println(format.format(123456789.12345));//56,789.123
    }

    private static void testNumberFormatSetRoundingMode() {
        NumberFormat format = NumberFormat.getInstance();
        format.setMaximumFractionDigits(0);//设置数值的【小数部分】允许的最大位数
        System.out.println("默认模式为:" + format.getRoundingMode().name());//HALF_EVEN
        System.out.println(format.format(5.6));//6。5以上不管是奇数还是偶数,5都舍入
        System.out.println(format.format(5.4));//5。5以下不管是奇数还是偶数,5都舍去
        System.out.println(format.format(1.5));//2。当是5时,若前一位是奇数,5就舍入
        System.out.println(format.format(2.5));//2。当是5时,若前一位是偶数,5就舍去
        
        format.setRoundingMode(RoundingMode.HALF_UP);//四舍五入。此方法只影响格式化,与解析无关
        System.out.println("当前模式为:" + format.getRoundingMode().name());//HALF_UP
        System.out.println(format.format(5.6));//6
        System.out.println(format.format(5.4));//5
        System.out.println(format.format(1.5));//2
        System.out.println(format.format(2.5));//3
    }

    private static void testNumberFormatParse() {
        NumberFormat format = NumberFormat.getInstance();
        format.setParseIntegerOnly(false);//设置数是否应该仅作为整数进行解析。此方法只影响解析,与格式化无关
        format.setMinimumFractionDigits(2);//这几个方法只影响格式化,与解析无关
        ParsePosition position = new ParsePosition(2);

        try {
            Number number = format.parse("00123.10050100结尾处不受影响");//如果无法解析字符串的【开头】则抛出ParseException
            Number number2 = format.parse("开头00123.10050100结尾处不受影响", position);//解析字符串时,从position.getIndex()处开始解析

            System.out.println(number.floatValue());//123.1005
            System.out.println(number.intValue());//123
            System.out.println(number2.doubleValue());//123.100501
            System.out.println(position.getIndex());//16。解析前,代表解析开始处字符的索引;解析后,代表被解析的最后一个字符后的字符的索引
            System.out.println(position.getErrorIndex());//-1。获取出错时的索引,如果没有设置错误索引,则为 -1

            position.setIndex(1);//如果重用ParsePosition,须重新设置一下Index才可以
            System.out.println(format.parse("12.345678只解析", position).floatValue());//2.345678
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

测试参考:https://www.cnblogs.com/baiqiantao/p/6738842.html

    public static void main(String[] args) throws Exception {

           NumberFormat format = new DecimalFormat("###0000");

          String format2 = format.format(123);//0123  在数字累加的时候可以保存数字前面的0 ,方便在一些文件序号等的处理

}

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。