1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java int类型的除法 向上取整 向下取整 保留小数位数

Java int类型的除法 向上取整 向下取整 保留小数位数

时间:2022-07-31 09:08:20

相关推荐

Java int类型的除法 向上取整  向下取整  保留小数位数

今天做了一道计算题,用到整数相除的向上取整,突然卡住了。然后查询并试用了如下方法。

一、三目运算法(向上 / 向下取整 快捷、准确)

两个int型 a、b,a / b 向上取整。可以使用

a / b + (a % b == 0 ? 0 : 1)

向下取整就不用这么麻烦啦。直接a / b就可以啦。

// 例如:int n = 2334 / 3 + (2334 % 3 == 0 ? 0 : 1);

二、使用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)

三、保留指定小数位数

// 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:这个比较绕,整数位若是奇数则四舍五入,若是偶数则五舍六入

参考博客:

int相除向上取整java数字取整RoundingMode 几个参数详解

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。