Java_Java基础:int类型计算

提供两个int型,a和b

1、三目运算法(快捷、准确)

  • 向上取整
    a / b + (a % b == 0 ? 0 : 1)
  • 向下取整
    int型 a / b 默认是向下取整:小数点后面的直接丢弃。

2、使用Math的取整方法

  • 向上 / 向下 / 四舍五入(需要多重类型转换,可能损耗性能 或者 精度丢失)
 /*
 * 向上取整
 */
 (int)Math.ceil(double a / b);
 // 或者
 (int)Math.ceil(a * 1.0 / b);

 /*
 * 向下取整
 */
 (int)Math.floor(double a / b)

 /*
 * 四舍五入
 */
 (int)Math.round(double a / b)

3、保留指定小数位数

// BigDecimal的除法方法, a和b均为BigDecimal类型, 保留位数 2,RoundingMode是保留位数的模式
BigDecimal divide = a.divide(b, 2, RoundingMode.HALF_UP);

// DecimalFormat的格式, 后面保留几个0就表示保留几位, a为double类型的值
DecimalFormat df  = new DecimalFormat("###.00");
String num = df.format(a);

// String的format方法, %.3f 表示保留三位小数, 并且保留的最后一位小数是四舍五入的
String.format("%.3f", 3.1415926)

// Formatter的格式转换
new Formatter().format("%.3f", PI)

// NumberFormat的格式转换
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
/*
 * setMinimumFractionDigits设置成2
 * 如果不这么做,那么当value的值是100.00的时候返回100
 * 而不是100.00
 */
nf.setMinimumFractionDigits(2);
nf.setRoundingMode(RoundingMode.HALF_UP);
/*
 * 如果想输出的格式用逗号隔开,可以设置成true
 */
nf.setGroupingUsed(false);
nf.format(value);

注:
java.math.RoundingMode里面的参数总结:
RoundingMode.CEILING:取右边最近的整数
RoundingMode.DOWN:去掉小数部分取整,也就是正数取左边,负数取右边,相当于向原点靠近的方向取整
RoundingMode.FLOOR:取左边最近的正数
RoundingMode.HALF_DOWN:五舍六入,负数先取绝对值再五舍六入再负数
RoundingMode.HALF_UP:四舍五入,负数原理同上
RoundingMode.HALF_EVEN:这个比较绕,整数位若是奇数则四舍五入,若是偶数则五舍六入

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值