java中保留小数位数的方法
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
返回值是String类型
//方法一:最简便的方法,调用DecimalFormat(直接截掉不要的尾数,不四舍五入,返回值String类型)
DecimalFormat df = new DecimalFormat(".00");
System.out.println(df.format(d));
//方法二:直接通过String类的format函数实现 (可以四舍五入,返回值String类型,%.2f表示保留后两位 )
System.out.println(String.format("%.2f", d));
//方法三:通过NumberFormat类实现,RoundingMode.HALF_DOWN表示 五舍六入,负数先取绝对值再五舍六入再负数,RoundingMode.HALF_UP:表示四舍五入,负数先取绝对值再五舍六入再负数。
double d = 114.145
2 NumberFormat nf = NumberFormat.getNumberInstance();
3 // 保留两位小数
4 nf.setMaximumFractionDigits(2);
5 // 如果不需要四舍五入,可以使用RoundingMode.DOWN
6 nf.setRoundingMode(RoundingMode.UP);
7 System.out.println(nf.format(d));
返回值是double类型
Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;(数据类型还是double)
Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;(数据类型还是double)
Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(数据类型变为int)。e是小数点后16位
System.out.println(Math.ceil(3.14159));
System.out.println(Math.round(3.14159));
System.out.println(Math.floor(3.14159));
结果是
BigDecimal.ROUND_HALF_UP表示四舍五入,
BigDecimal.ROUND_HALF_DOWN表示五舍六入,
BigDecimal.ROUND_UP表示进位处理(就是直接加1),
BigDecimal.ROUND_DOWN表示直接去掉尾数。
1 double d = 114.145;
2 d = (double) Math.round(d * 100) / 100;
3 System.out.println(d);
结果是
114.15
1 double d = 114.145;
2 BigDecimal b = new BigDecimal(d);
3 d = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
4 System.out.println(d);
结果是
114.15
import java.math.BigDecimal; //引入这个包
public class Test {
public static void main(String[] args) {
double i = 3.856;
// 舍掉小数取整
System.out.println("舍掉小数取整:Math.floor(3.856)=" + (int) Math.floor(i));
// 四舍五入取整
System.out.println("四舍五入取整:(3.856)="
+ new BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP));
// 四舍五入保留两位小数
System.out.println("四舍五入取整:(3.856)="
+ new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));
// 凑整,取上限
System.out.println("凑整:Math.ceil(3.856)=" + (int) Math.ceil(i));
// 舍掉小数取整
System.out.println("舍掉小数取整:Math.floor(-3.856)=" + (int) Math.floor(-i));
// 四舍五入取整
System.out.println("四舍五入取整:(-3.856)="
+ new BigDecimal(-i).setScale(0, BigDecimal.ROUND_HALF_UP));
// 四舍五入保留两位小数
System.out.println("四舍五入取整:(-3.856)="
+ new BigDecimal(-i).setScale(2, BigDecimal.ROUND_HALF_UP));
// 凑整,取上限
System.out.println("凑整(-3.856)=" + (int) Math.ceil(-i));
}
}