当前位置 博文首页 > 文章内容

    numberformat,NumberFormat 格式化处理数字

    作者:dlxiaoyu01 栏目:其他 时间:2021-03-17 16:42:44

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



        一、官方API文档
        public abstract class NumberFormat
        extends Format
        NumberFormat是一个抽象类继承自Format
        NumberFormatis the abstract base class for all number formats. This class provides the interface for formatting and parsing numbers.NumberFormatalso provides methods for determining which locales have number formats, and what their names are.
        NumberFormat是一个抽象的数字格式化类。该类提供的格式和解析数字的接口,NumberFormat也提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。
        NumberFormathelps you to format and parse numbers for any locale. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal.
        NumberFormat可以帮助你格式和解析任何语言的数字,使代码能够完全独立于小数点、千位分隔符甚至所用特定小数位数的语言环境约定,并与数值格式是否为偶小数无关。


        二、获取Number的实例
        NumberFormat format = NumberFormat.getInstance();


        三、测试代码
        public class TestNumberFormat {
        public static void main(String[] args) {
        testNumberFormatGetInstance();
        System.out.println("----------testNumberFormatDigits------------");
        testNumberFormatDigits();
        System.out.println("-----------testNumberFormatSetRoundingMode-----------");
        testNumberFormatSetRoundingMode();
        System.out.println("-----------testNumberFormatParse-----------");
        testNumberFormatParse();
        private static void testNumberFormatGetInstance() {
        double d = 23323.3323232323;
        System.out.println(NumberFormat.getInstance().format(d));//23,323.332。返回当前缺省语言环境的【缺省数值】格式
        System.out.println(NumberFormat.getCurrencyInstance().format(d));//¥23,323.33。返回当前缺省语言环境的【货币】格式
        System.out.println(NumberFormat.getNumberInstance().format(d));//23,323.332。返回当前缺省语言环境的【通用数值】格式
        System.out.println(NumberFormat.getIntegerInstance().format(d));//23,323。返回当前缺省语言环境的【整数】格式
        System.out.println(NumberFormat.getPercentInstance().format(d));//2,332,333%。返回当前缺省语言环境的【百分比】格式
        private static void testNumberFormatDigits() {
        NumberFormat format = NumberFormat.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 ,方便在一些文件序号等的处理
        }


        文章来源:https://blog.csdn.net/qq_36502826/article/details/86673906