import java.math.BigDecimal;
/**
* @Auther: liyue
* @Date: 2019/8/23 17:01
* @Description:
*/
public class DoubleUtil {
private final static String ZERO = "0";
/**
* String转double,为空返回0
*
* @param str
* @return
*/
public static Double parseDouble(String str) {
if (str == null || str.equals(ZERO) || str.length() == 0) {
return 0.0;
}
return Double.parseDouble(str);
}
/**
* String转double,为空返回null
*
* @param str
* @return
*/
public static Double parseDoubleNull(String str) {
if (str == null || str.equals(ZERO) || str.length() == 0) {
return null;
}
return Double.parseDouble(str);
}
/**
* 保留小数,四舍五入
*
* @param data
* @param amount
* @return
*/
public static Double round(Double data, int amount) {
if (data == null)
return null;
//利用BigDecimal来实现四舍五入.保留一位小数
double result = new BigDecimal(data).setScale(amount, BigDecimal.ROUND_HALF_UP).doubleValue();
//1代表保留1位小数,保留两位小数就是2,依此累推
//BigDecimal.ROUND_HALF_UP 代表使用四舍五入的方式
return result;
}
/**
* 保留小数,四舍五入
*
* @param data
* @param amount
* @return
*/
public static Double round(String data, int amount) {
if (data == null)
return null;
//利用BigDecimal来实现四舍五入.保留一位小数
double result = new BigDecimal(data).setScale(amount, BigDecimal.ROUND_HALF_UP).doubleValue();
//1代表保留1位小数,保留两位小数就是2,依此累推
//BigDecimal.ROUND_HALF_UP 代表使用四舍五入的方式
return result;
}
/**
* double四舍五入不保留小数转为long
*
* @param data Double
* @return
*/
public static Long roundToLong(Double data) {
if (data == null)
return null;
String str = round(data, 0) + "";
return Long.parseLong(str.split("\\.")[0]);
}
/**
* double四舍五入不保留小数转为long
*
* @param data String
* @return
*/
public static Long roundToLong(String data) {
if (data == null)
return null;
String str = round(data, 0) + "";
return Long.parseLong(str.split("\\.")[0]);
}
/**
* 计算百分比,返回结果不带百分符号
*
* @param dividend Double
* @param divisor Double
* @return
*/
public static Double ratio(Double dividend, Double divisor) {
if (dividend == null || divisor == null || dividend == 0 || divisor == 0)
return null;
return round(dividend / divisor * 100, 2);
}
/**
* 计算百分比,返回结果不带百分符号
*
* @param dividend Integer
* @param divisor Integer
* @return
*/
public static Double ratio(Integer dividend, Integer divisor) {
if (dividend == null || divisor == null || dividend == 0 || divisor == 0)
return null;
return round(dividend * 1.0 / divisor * 100, 2);
}
/**
* 计算百分比,返回结果带百分符号
*
* @param dividend
* @param divisor
* @return
*/
public static String ratios(Double dividend, Double divisor) {
if (dividend == null || divisor == null || dividend == 0 || divisor == 0)
return null;
return round(dividend / divisor * 100, 2) + "%";
}
public static void main(String[] args) {
System.err.println(ratio(721, 900));
}
}
END。