java中保留小数位数

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));
 }

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值