android中获取固定位数的小数
问题描述
最近最项目,需要计算目前日期(一个月中第几天)除31,得到小数点后两位数据。
1:首先获取日期
Android获取当前系统日期和时间
上面文章中讲了三种获取日期的方法,由于我只需要获取某一天,所以,我选择第二种方法。
2:获取日小数点后固定位数据的方法
有两种方法可以获取小数点后固定位数的方法,
// 方法一: 四舍五入
DecimalFormat df = new DecimalFormat("0.00");
double test = 3.1415;
System.out.println(df.format(test));
// 方法二:
double test2 = 3.1415;
BigDecimal b = new BigDecimal(test2);
test2 = b.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d2);
其中,setScale 第一个参数为保留位数 第二个参数为舍入机制BigDecimal.ROUND_DOWN 表示不进位 ,BigDecimal.ROUND_UP表示进位
3:出现问题
但是在实际操作中,某一天为int类型整数,31也是int类型整数,前者除后者,结果为0。为了实现保留小数的目的,采用下面的方法实现:
int day;
DecimalFormat df=new DecimalFormat("0.00");//设置保留位数
df.format((float)day/31);