最近使用Java开发中遇到一些场景需要对数值进行小数点精确度的限制,如保留小数点后四位,索性梳理一下相关的方法,大概六种方式,直接贴代码,如下:
import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class TestDemo{ public static void main(String[] args) { double num1 = 100.13145; //保留4位小数 100.1315 四舍五入 BigDecimal bigDecimal = new BigDecimal(num1); double num2 = bigDecimal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(num2); // 保留4位小数 100.1315 四舍五入 DecimalFormat decimalFormat = new DecimalFormat("#.0000"); String stringValue = decimalFormat.format(num1); System.out.println(stringValue); Double doubleValue = Double.parseDouble(decimalFormat.format(num1)); System.out.println(doubleValue); // 保留4位小数 100.1315 四舍五入 System.out.println(String.format("%.4f", num1)); // 保留4位小数 100.1315 四舍五入 Double get_double = (double) ((Math.round(num1 * 10000)) / 10000.0); System.out.println(get_double); // 保留4位小数 100.1315 NumberFormat numberFormat = NumberFormat.getNumberInstance(); numberFormat.setMaximumFractionDigits(4); System.out.println(numberFormat.format(num1)); // 保留4位小数 100.1314 float num3 = (float) 100.13145; float a = (float) (Math.round(num3 * 10000)) / 10000; System.out.println(a); } }