出错代码
/** * 获取相差天数 * * @param date1 早 * @param date2 晚 * @return */ public static double getDaysBetween(Date date1, Date date2) { long diff = date2.getTime() - date1.getTime(); double days = (double) diff / (24 * 60 * 60 * 1000); if (days == Math.floor(days)) {//整天数 return days; } else {//带小数 String s = String.valueOf(days); String[] split = s.split("\\."); String s2 = split[1]; if (s2.length() > 1) {//两位小数 String substring = s.substring(0, s.indexOf(".") + 2);//保留一位,其余位舍弃 double v = Double.parseDouble(substring); double v1 = v + 0.1;//再补0.1 return v1; } else {//一位小数 return days; } } }
修改代码
/** * 获取相差天数 * * @param date1 早 * @param date2 晚 * @return */ public static double getDaysBetween(Date date1, Date date2) { long diff = date2.getTime() - date1.getTime(); if(diff < 24 * 60 * 60 * 1000){ return 0.1; } double days = (double) diff / (24 * 60 * 60 * 1000); if (days == Math.floor(days)) {//整天数 return days; } else {//带小数 String s = String.valueOf(days); String[] split = s.split("\\."); String s2 = split[1]; if (s2.length() > 1) {//两位小数 String substring = s.substring(0, s.indexOf(".") + 2);//保留一位,其余位舍弃 double v = Double.parseDouble(substring); double v1 = v + 0.1;//再补0.1 return v1; } else {//一位小数 return days; } } }
出错原因
double类型小于0也会使用科学计数法计算,所以应该先判断是否小于0