java金额三位一撇方法_Java数据格式化问题

1.时间类型格式化

1-1.Date(日期)

Date类是一个非抽象类,也就是具体类,那么就可以将其实例化,实例化会使用系统的当前日期和时间创建一个日期对象,这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间,通过Date类的get方法可以拿到我们想要的具体数据,也可以通过set方法来设置特定的时间和日期。要注意的是通过get方法拿到的某些值是与1999年01月01日0时0分的相对值。比如现在如果是2016年,那么下图代码的输出为116。

e6ffa90d6641

图(1)

我们可以发现这个getYear()方法上有一个横线,其实Date的好多方法都是如此,原因是不被推荐使用,而被推荐的是使用Calendar类来达到相关的目的。

1-2.Calendar(日历)

Calendar类是一个抽象类,通常通过getInstance()方法得到一个当前时区,当前语言设置下的实例。Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);

int month = cal.get(Calendar.MONTH);

现在是2016年12月,那么year的值为2016,month的值为11(一月是0)。

我们也可以通过其set方法设置我们想要的时间和日期。要注意的是通过Date类和Calendar类的set方法设置日期时间后,再通过get方法拿到的是我们设置的时间和日期。

e6ffa90d6641

图(2)

图(2)year和month的值为2015和5(6月)。

1-3.DateFormat(日期格式)

DateFormat类也是一个抽象类,通常使用其具体子类SimpleDateFormat来对日期类型(Date类型)进行格式化,使用其构造方法实例化一个SimpleDateFormat,并给出想要的格式就可以对Date类型进行格式化了。

e6ffa90d6641

图(3)Sun Dec 04 13:25:14 CST 2016

2016-12-04 13:25:14

2.数字格式化和精度

2-1.使用NumberFormat

NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat),  这适合根据本地设置格式化一个数字。可以使用非缺省的地区设置,例如德国。然后格式化方法根据特定的地区规则格式化数字。NumberFormat nf =NumberFormat.getInstance(Locale.CHINA);

nf.format(1234567.12345)

如果将这个值输出,则为123,456.123,默认四舍五入保留三位小数。显然这种方法不好用且有一定的缺陷。

2-2.使用DecimalFormat

DecimalFormat是一个具体类,用法和SimpleDateFormat相似,通过其构造方法实例化,并给出想要的格式。

2-2-1.格式化数字DecimalFormat df0 = new DecimalFormat();

System.out.println(df0.format(123456));

因为本地是中国,则输出为123,456,可以设置不同的国家,来得到相应的格式。Locale.setDefault(Locale.GERMAN);

DecimalFormat df0 = new DecimalFormat();

System.out.println(df0.format(123456));

设置为德国风格,则输出为123.456。(中国的为一撇,德国的为一点)

2-2-2.数字精度DecimalFormat  df1  =  new  DecimalFormat(".000");

System.out.println(df1.format(1234.56));

输出为1234.560。也可以使用像"####.000"的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。DecimalFormat df0 = new DecimalFormat();

DecimalFormat df1 = new DecimalFormat(".00");

String i = df1.format(123456.12345);

System.out.println(i);

System.out.println(df0.format(Double.parseDouble(i)));

输出分别为:123456.12

123,456.12

2-2-3.科学计数法DecimalFormat  df  =  new  DecimalFormat("0.00E0");

System.out.println(df.format(1234000000000000.56));

输出为:1.23E15。NumberFormat nf = NumberFormat.getPercentInstance();

System.out.println(nf.format(0.45022));

输出为:45%。NumberFormat nf = NumberFormat.getPercentInstance();

nf.setMinimumFractionDigits(2);

System.out.println(nf.format(0.45022));

输出为:45.02%。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值