今天项目中需要更改时长的显示方式,规定必须保留两位小数,刚才看简书的时候正好看到一个指定保留小数位数的工具类的文章,在此基础上,做了一点小修改,用起来更加方便了,有需要的朋友尽管撸走
DecimalUtils 类:
代码如下
importjava.math.BigDecimal;
importjava.math.RoundingMode;
importjava.text.DecimalFormat;
/**
* Created by Sean on 17/3/10.
*/
publicclassDecimalUtils {
/**
* 按四舍五入保留指定小数位数,位数不够用0补充
* @param o 格式化前的小数
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
publicstaticString formatDecimalWithZero(Object o,intnewScale) {
returnString.format("%."+ newScale +"f", o);
}
/**
* 按四舍五入保留指定小数位数,位数不够用0补充
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
publicstaticString formatDecimalWithZero(doubled,intnewScale) {
String pattern ="0.";
for(inti =0; i < newScale; i++) {
pattern +="0";
}
DecimalFormat df =newDecimalFormat(pattern);
returndf.format(d);
}
/**
* 按四舍五入保留指定小数位数,位数不够用0补充
* @param d 格式化前的小数 String形式
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
publicstaticString formatDecimalWithZero(String d,intnewScale) {
String pattern ="0.";
for(inti =0; i < newScale; i++) {
pattern +="0";
}
DecimalFormat df =newDecimalFormat(pattern);
returndf.format(Double.valueOf(d));
}
/**
* 按四舍五入保留指定小数位数,小数点后仅保留有效位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
publicstaticString formatDecimal(doubled,intnewScale) {
String pattern ="#.";
for(inti =0; i < newScale; i++) {
pattern +="#";
}
DecimalFormat df =newDecimalFormat(pattern);
returndf.format(d);
}
/**
* 按四舍五入保留指定小数位数,小数点后仅保留有效位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
publicstaticString formatDecimal(String d,intnewScale) {
String pattern ="#.";
for(inti =0; i < newScale; i++) {
pattern +="#";
}
DecimalFormat df =newDecimalFormat(pattern);
returndf.format(Double.valueOf(d));
}
/**
* 按指定舍入模式保留指定小数位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @param roundingMode 舍入模式
* (RoundingMode.UP始终进一/DOWN直接舍弃/
* CEILING正进负舍/FLOOR正舍负进/
* HALF_UP四舍五入/HALF_DOWN五舍六进/
* HALF_EVEN银行家舍入法/UNNECESSARY抛出异常)
* @return 格式化后的小数
*/
publicstaticdoubleformatDecimal(doubled,intnewScale, RoundingMode roundingMode) {
BigDecimal bd =newBigDecimal(d).setScale(newScale, roundingMode);
returnbd.doubleValue();
}
/**
* 按指定舍入模式保留指定小数位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @param roundingMode 舍入模式
* (RoundingMode.UP始终进一/DOWN直接舍弃/
* CEILING正进负舍/FLOOR正舍负进/
* HALF_UP四舍五入/HALF_DOWN五舍六进/
* HALF_EVEN银行家舍入法/UNNECESSARY抛出异常)
* @return 格式化后的小数
*/
publicstaticdoubleformatDecimal(String d,intnewScale, RoundingMode roundingMode) {
BigDecimal bd =newBigDecimal(Double.valueOf(d)).setScale(newScale, roundingMode);
returnbd.doubleValue();
}
}
http://m.bbyears.com/jiaocheng/131118.html
推荐访问: