工具类-java精确到小数点后6位
验证要求,必须精确到小数点后6位,但是后面都是0的话,double会省略0,正则验证不通过,所以有了下面解决方法:
精确到小数点后六位,若最后一位是0则用1代替。
private double getSixScale(String s) {
//先精确到后6位,并转为字符串
String sixScaleString = new BigDecimal(s).setScale(6, BigDecimal.ROUND_HALF_UP).toString();
//若字符串最后一位是0,则用1代替
if ("0".equals(sixScaleString.substring(sixScaleString.length() - 1))) {
sixScaleString = sixScaleString.substring(0, sixScaleString.length() - 1) + "1";
}
//再转为double
return new BigDecimal(sixScaleString).doubleValue();
}