BigDecimal类:
因为在Java中,计算浮点数时,总是会有误差,因此使用BigDecimal来进行大的浮点数计算。
直接看代码:
package com.classes.bigDecimal;
import java.math.BigDecimal;
import java.util.Dictionary;
public class Demo01 {
public static void main(String[] args) {
double a = 1.0;
double b = 0.9;
System.out.println(a-b);
double result = (1.4-0.5)/0.9;
System.out.println(result);
// BigDecimal,大的浮点数精确计算
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
// 减法
BigDecimal r1 = bd1.subtract(bd2);
System.out.println(r1);
// 加法
BigDecimal r2 = bd1.add(bd2);
System.out.println(r2);
// 乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3);
// 除法
BigDecimal r4 = new BigDecimal("1.4")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
System.out.println(r4);
//当整除不尽时,可以添加参数divide(除数,保留几位,四舍五入BigDecimal.ROUND_HALF_UP)
BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
System.out.println(r5);
}
}
特别注意除法r4的使用。
Day类:
Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。(jdk1.1之后)
还是来看一下没过期的Date类的用法:
package com.classes.date;
import java.util.Date;
public class Demo01 {
public static void main(String[] args) {
Date date1 = new Date();
// 今天
System.out.println(date1.toString());
System.out.println(date1.toLocaleString());//按年月日的格式输出
// 昨天 用今天的减去一天的毫秒数
Date date2 = new Date(date1.getTime()-60*60*24*1000);
System.out.println(date2.toLocaleString());
// 方法
// 1.after before 判断日期1是否在日期2之前或之后
System.out.println(date1.after(date2));
System.out.println(date1.before(date2));
// 2.比较 compareTo();返回一个正负值
System.out.println(date2.compareTo(date1));
// 3.equals 比较是否相等
System.out.println(date1.equals(date2));
}
}
运行结果:
Calendar类:
Calendar提供了获取或设置各种日历字段的方法。
构造方法:
protected Calendar():由于修饰符是protected, 所以无法直接创建该对象。
常用方法:看代码
package com.classes.calendar;
import sun.misc.Cleaner;
import java.util.Calendar;
public class Demo01 {
public static void main(String[] args) {
// 1.创建Calendar对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
// 计算毫秒数:1970年到现在的
System.out.println(calendar.getTimeInMillis());
// 2.获取时间信息
int year = calendar.get(Calendar.YEAR);//年
int month = calendar.get(Calendar.MONTH);//月
int day = calendar.get(Calendar.DAY_OF_MONTH);//日
int hour = calendar.get(Calendar.HOUR_OF_DAY);//HOUR 12小时,HOUR_OF_DAY 24小时
int minute = calendar.get(Calendar.MINUTE);//分
int second = calendar.get(Calendar.SECOND);//秒
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);//由于月是从0开始的0-11,所以月份要+1
// 3.修改日期
Calendar calendar2 = Calendar.getInstance();
System.out.println(calendar2.getTime().toLocaleString());
calendar2.set(Calendar.DAY_OF_MONTH,5);
System.out.println(calendar2.getTime().toLocaleString());
// 4.add修改时间
calendar2.add(Calendar.HOUR_OF_DAY,1);//要添加的值
System.out.println(calendar2.getTime().toLocaleString());
// 补充,输出本月的第一天和最后一天
int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);
System.out.println(max);
System.out.println(min);
}
}
运行结果:
特别注意:使用Calendar时,不能直接new。修改时间信息时直接调用Calendar里的日期元素。