JAVA中对浮点数精度控制的几种方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40348465/article/details/87892607

方法一:使用BigDecimal类中的setScale方法

BigDecimal a = new BigDecimal("3.1415926");
a = a.setScale(3, BigDecimal.ROUND_HALF_UP); // 返回一个新的大浮点数对象,保留小数点后3位,且指定为四舍五入
System.out.println(a); // 输出3.142

方法二:使用String.format方法

double a = 3.1415926;
String str = String.format("%.3f", a); // 返回的是一个字符串,保留小数点后3位,默认四舍五入
System.out.println(str); // 输出3.142

方法三:使用NumberFormat类中的setMaximumFractionDigits方法

BigDecimal a = new BigDecimal("3.1415926");
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(3); // 设置保留小数点后最多几位
String str = nf.format(a.doubleValue()); // 对大浮点数进行格式化,返回字符串
   System.out.println(str); // 输出3.142

方法四:使用DecimalFormat类中的setRoundingMode和format方法

BigDecimal a = new BigDecimal("3.1415926");
DecimalFormat df = new DecimalFormat("#0.000"); // 指定数字模式,小数点后保留三位
df.setRoundingMode(RoundingMode.FLOOR); // 指定省略模式,此处为向下省略
String str = df.format(a.doubleValue());  // 格式化,返回字符串
System.out.println(str); // 输出3.141

猜你喜欢

转载自blog.csdn.net/qq_40348465/article/details/87892607
今日推荐