package com.fzzy.api.utils;
|
|
import java.math.BigDecimal;
|
import java.text.DecimalFormat;
|
|
/**
|
* 数字格式化工具类
|
*/
|
public class NumberUtil {
|
|
/**
|
* 对double类型的数值保留指定位数的小数。<br>
|
* 该方法舍入模式:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。<br>
|
* <b>注意:</b>如果精度要求比较精确请使用 keepPrecision(String number, int precision)方法
|
* @param number 要保留小数的数字
|
* @param precision 小数位数
|
* @return double 如果数值较大,则使用科学计数法表示
|
*/
|
public static double keepPrecision(Double number, int precision) {
|
if(null == number || 0.0 == number ) return 0.0;
|
BigDecimal bg = new BigDecimal(number);
|
return bg.setScale(precision, BigDecimal.ROUND_HALF_UP).doubleValue();
|
}
|
|
/**
|
* 对float类型的数值保留指定位数的小数。<br>
|
* 该方法舍入模式:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。<br>
|
* <b>注意:</b>如果精度要求比较精确请使用 keepPrecision(String number, int precision)方法
|
* @param number 要保留小数的数字
|
* @param precision 小数位数
|
* @return float 如果数值较大,则使用科学计数法表示
|
*/
|
public static float keepPrecision(Float number, int precision) {
|
if(null == number) return 0f;
|
BigDecimal bg = new BigDecimal(number);
|
return bg.setScale(precision, BigDecimal.ROUND_HALF_UP).floatValue();
|
}
|
/**
|
* double转字符串,避免出现科学计数法
|
* @param d
|
* @return
|
*/
|
public static String doubleToStr(Double d) {
|
if(null == d) return "";
|
DecimalFormat df = new DecimalFormat("0.0");
|
return df.format(d);
|
}
|
|
}
|