可以四舍五入,也可以直接截断。
比如:输入12345.6789,输出可以是12345.68也可以是12345.67。至于是否需要四舍五入,可以通过参数来决定(RoundingMode.UP/RoundingMode.DOWN等参数)。
2. 实现代码packagecom.clzhang.sample;importjava.math.BigDecimal;importjava.math.RoundingMode;importjava.text.DecimalFormat;importjava.text.NumberFormat;publicclassDoubleTest {/**
* 保留两位小数,四舍五入的一个老土的方法*@paramd*@return*/publicstaticdoubleformatDouble1(doubled) {return(double)Math.round(d*100)/100;}/**
* The BigDecimal class provides operations for arithmetic, scale manipulation, rounding, comparison, hashing, and format conversion.*@paramd*@return*/publicstaticdoubleformatDouble2(doubled) {//旧方法,已经不再推荐使用//BigDecimal bg = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);//新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN
BigDecimal bg =newBigDecimal(d).setScale(2
, RoundingMode.UP);returnbg.doubleValue();}/**
* NumberFormat is the abstract base class for all number formats.
* This class provides the interface for formatting and parsing numbers.*@paramd*@return*/publicstaticString formatDouble3(doubled) {NumberFormat nf=NumberFormat.getNumberInstance();//保留两位小数
nf.setMaximumFractionDigits(2);//如果不需要四舍五入,可以使用RoundingMode.DOWN
nf.setRoundingMode(RoundingMode.UP);returnnf.format(d);}/**
* 这个方法挺简单的。
* DecimalFormat is a concrete subclass of NumberFormat that formats decimal numbers.*@paramd*@return*/publicstaticString formatDouble4(doubled) {DecimalFormat df=newDecimalFormat("#.00");returndf.format(d);}/**
* 如果只是用于程序中的格式化数值然后输出,那么这个方法还是挺方便的。