Double类型数据保留指定位数方法总结
程序员文章站
2022-07-15 13:06:44
...
开发中经常用到数据小数点位数保留,故此总结如下,方便查阅;
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));
}
}