import com.aliyun.et.industry.pangang.common.consts.Constants;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
/**
* @Auther: liyue
* @Date: 2019/8/23 17:01
* @Description:
*/
public class DoubleUtil {
/**
* String轉double,爲空返回0
*
* @param str
* @return
*/
public static Double parseDouble(String str) {
if (str == null || str.equals(Constants.ZERO) || StringUtils.isBlank(str)) {
return 0.0;
}
return Double.parseDouble(str);
}
/**
* String轉double,爲空返回null
*
* @param str
* @return
*/
public static Double parseDoubleNull(String str) {
if (str == null || str.equals(Constants.ZERO) || StringUtils.isBlank(str)) {
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。