Java 四舍五入计算问题

来源:互联网 发布:网络病毒营销的前提 编辑:程序博客网 时间:2024/04/29 08:21

Java  四舍五入计算问题

import java.math.BigDecimal;import java.math.RoundingMode;import java.text.DecimalFormat;public class Test {public static void main(String[] args) {//第一种方法并非完全是    四舍五入double d1=2.346;double d2=2.342;//下面这四个数是重点double d3=2.345;double d4=2.3456;double d5=2.3451;double d6=2.3450;  DecimalFormat df=new DecimalFormat("#.00"); System.out.println(df.format(d1));  //2.35System.out.println(df.format(d2));  //2.34//严格意义他并不是四舍五入   虽然保留两位小数  如果第三位为5 但是他还需要看第四位//第四位为0和第四位没有值情况相同都不进位    第四位不为0则进位System.out.println(df.format(d3));//2.34System.out.println(df.format(d4));//2.35System.out.println(df.format(d5));//2.35System.out.println(df.format(d6));//2.34System.out.println("****************************");//第二种方法    double f = 111231.5556;      BigDecimal b = new BigDecimal(f);      //HALF_UP:最近数字舍入(5进)。这是我们最经典的四舍五入。    System.out.println(b.setScale(2,RoundingMode.HALF_UP).doubleValue());    //111231.56    //HALF_DOWN:最近数字舍入(5舍)。在这里5是要舍弃的。    System.out.println(b.setScale(2,RoundingMode.HALF_DOWN).doubleValue());  //111231.56    //HAIL_EVEN:银行家舍入法。    System.out.println(b.setScale(2,RoundingMode.HALF_EVEN).doubleValue());  //111231.56    //UP:远离零方向舍入。向绝对值最大的方向舍入,只要舍弃位非0即进位。    System.out.println(b.setScale(2,RoundingMode.UP).doubleValue());         //111231.56    //DOWN:趋向零方向舍入。向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。    System.out.println(b.setScale(2,RoundingMode.DOWN).doubleValue());       //111231.55    //CEILING:向正无穷方向舍入。向正最大方向靠拢。若是正数,舍入行为类似于UP,    //若为负数,舍入行为类似于DOWN。Math.round()方法就是使用的此模式    System.out.println(b.setScale(2,RoundingMode.CEILING).doubleValue());   //111231.56    //FLOOR:向负无穷方向舍入。向负无穷方向靠拢。若是正数,舍入行为类似于DOWN;若为负数,舍入行为类似于UP。    System.out.println(b.setScale(2,RoundingMode.FLOOR).doubleValue());     //111231.55        System.out.println("****************************");    //第三种    //Math.round()或者Math.rint():返回其值最接近参数并且是整数的 long,int或者double 值。    double b1=1.235;    System.out.println(Math.rint(b1));    //1.0    System.out.println(Math.round(b1));   //1    //如果要保留2位小数,那么    System.out.println(Math.rint(b1*100)/100);  //1.24    //Math.round()不适用    System.out.println(Math.round(b1*100)/100); //1}}


2 0
原创粉丝点击