MENU

Java中精度控制常用的几种方法

April 9, 2020 • Read: 140 • 教程学习

前言

对于浮点数的运算,经常需要考虑控制小数部分的精度,有几种比较常用的控制方法:

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

作者:冰洛

链接:https://icelo.club/archives/40.html

版权:转载时须注明来源:冰洛博客

Archives QR Code Tip
QR Code for this page
Tipping QR Code