開發中經常用到數據小數點位數保留,故此總結如下,方便查閱;
Double類型數據保留指定位數方法總結
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
* @program: youpin
* @description:
* @author: Mr.Jkx
* @create: 2020-03-17 14:06
*/
public class JkxTest {
public static void main(String[] args) {
double f = 1.31415926;
fun1(f);
fun2(f);
fun3(f);
fun4(f);
// 方法都會進行數據的四捨五入
double f1 = 1.31615926;
fun1(f1);
fun2(f1);
fun3(f1);
fun4(f1);
}
/**
* 使用精確小數BigDecimal
*/
public static void fun1(double f) {
BigDecimal bg = new BigDecimal(f);
/**
* 參數:
* 2(newScale) - 要返回的 BigDecimal 值的標度。
* BigDecimal.ROUND_HALF_UP(roundingMode) - 要應用的舍入模式。
* 返回:
* 一個 BigDecimal,其標度爲指定值,其非標度值可以通過此 BigDecimal 的非標度值乘以或除以十的適當次冪來確定。
*/
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
}
/**
* DecimalFormat轉換最簡便
*/
public static void fun2(double f) {
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
}
/**
* @Description: String.format打印最簡便
* @Author: Mr.Jkx
* @date: 2020/6/12 14:56
*/
public static void fun3(double f) {
System.out.println(String.format("%.2f", f));
}
/**
* @Description: 使用NumberFormat
* @Author: Mr.Jkx
* @date: 2020/6/12 14:56
*/
public static void fun4(double f) {
NumberFormat nf = NumberFormat.getNumberInstance();
/**
* setMaximumFractionDigits(int newValue)
* 設置數的小數部分所允許的最大位數。
*/
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(f));
}
}