我们都知道double和float都是浮点型,在转型或者比较的时候可能出现问题,这里讲一下怎么针对double类型做精度处理
返回类型为double(四舍五入)
- 使用Math.round转成long再转回double
double dou = 3.1487426;
dou = (double) Math.round(dou * 100) / 100;
System.out.println(dou);
- 使用BigDecimal进行格式化
double dou = 3.1487426;
BigDecimal bigDecimal = new BigDecimal(dou).setScale(2, RoundingMode.HALF_UP);
double newDouble = bigDecimal.doubleValue();
System.out.println(newDouble);
返回类型是 String【需要去除末尾多余0的,请看第4点】
- 使用String.format()格式化(四舍五入)
double dou = 3.1487426;
String douStr = String.format("%.2f", dou)
System.out.println(douStr);
- 使用NumberFormat进行格式化(四舍五入)
double dou = 3.1487426;
NumberFormat numberFormat = NumberFormat.getNumberInstance();
numberFormat.setMaximumFractionDigits(2);
// numberFormat.setRoundingMode(RoundingMode.UP); //默认的模式就是四舍五入,可以省略
String douStr = numberFormat.format(dou)
System.out.println(douStr);
- 使用BigDecimal进行格式化(四舍五入)
double dou = 3.1487426;
DecimalFormat decimalFormat = new DecimalFormat("#.00");
String str = decimalFormat.format(dou);
System.out.pr服务器托管网intln(str);
- 去除末尾多余的 0
/**
* 方式一:格式化数值(四舍五入),去除末尾无效的0
*
* @param value 值
* @param scale 保留小数位数
* @return
*/
public static String scaleTrimZero(Double value, int scale) {
if (Objects.isNull(value)) {
return "";
}
// 使用 stripTrailingZeros() 会变成科学计数法,需要使用 toPlainString() 转字符串
return BigDecimal.valueOf(value).setScale(scale, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
}
/**
* 方式二:格式化数值(四舍五入),去除末尾无效的0
*
* @param value 值
* @param scale 保留小数位数
* @return
*/
public static String scaleTrimZero(Double value, int scale) {
if (Objects.isNull(value)) {
return "";
}
BigDecimal bigDecimal = BigDecimal.valueOf(value).setScale(scale, RoundingMode.HALF_UP);
String str = bigDecimal.toString();
if (str.contains(".")) {
str = str.replaceAll("服务器托管网0+$", "");
str = str.replaceAll("[.]$", "");
}
return str;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
在现代晶圆厂中,设备自动化系统(Equipment Automation Programming,EAP)已经成为了不可或缺的关键要素。EAP系统不仅是生产自动化的重要组成部分,更是连接制造执行系统(MES)与设备之间的桥梁,其服务器托管网在晶圆制造中扮演了至…