必威体育Betway必威体育官网
当前位置:首页 > IT技术

NumberFormat格式化处理数字

时间:2019-09-11 07:42:15来源:IT技术作者:seo实验室小编阅读:50次「手机版」
 

number_format

一、官方API文档

public abstract class NumberFormat
extends Format

NumberFormat是一个抽象类继承自Format

NumberFormat is the abstract base class for all number formats. This class provides the interface for formatting and parsing numbers. NumberFormat also provides methods for deterMining which locales have number formats, and what their names are.

NumberFormat是一个抽象的数字格式化类。该类提供的格式和解析数字的接口,NumberFormat也提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。

NumberFormat helps 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 ,方便在一些文件序号等的处理

}

相关阅读

字符串转换为数字时出现NumberFormatException错误

用Integer.parseInt()转换字符时抛出NumberFormatException错误 原因:一. 字符串中包含空格或非数字字符:检查所输入的字符串或者从

java.lang.NumberFormatException: For input string:

我遇到的这个错误是在执行查询的时候遇到的错误,所以就不说因为类型转换引起的原因了 先贴上相关的sql 其实报这个错误的原因就是

java.lang.NumberFormatException 错误及解决办法

前言: 在做后台时用的jsp开发,在页面向controller传参时用String接收的参数,但是数据库实体中jies接收该参数时是int类型,做了一下强

分享到:

栏目导航

推荐阅读

热门阅读