java如何实现 四舍六入五成双

解决方案 »

  1.   

    最好的办法,比如 4.6 四舍五入取整, 4.6 + 0.5,结果再强制转成int型,取整数部分.结果就是5.
    如果是4.4 的话,4.4+0.5=4.9 取整为4如果是多位小数的话,先乘一个数,如10 100 1000 ,具体看小数位置,再执行上面的算法,结果再除以刚才乘的数. 
      

  2.   

    好像不是这个 比这个复杂的delphi上就有一个函数支持 不知道java有没有 
    还有楼上是做广告的么 什么意思 点进去都是网站广告四舍六入五成双 的意思可以百度的谢谢各位了 呵呵
      

  3.   


    import java.math.BigDecimal;public class NumberUtil {
    public static double getRound(int index, double number) {
    if (number == 0)
    return 0;
    if (index < 0)
    throw new IllegalArgumentException("error param");

    String temp = String.valueOf(number);
    BigDecimal b = new BigDecimal(temp);
    BigDecimal one = new BigDecimal(1); return b.divide(one, index, BigDecimal.ROUND_HALF_EVEN).doubleValue();
    } public static void main(String[] args) {
    System.out.println(getRound(1, 1.25));

    }
    }
      

  4.   

    public static int round(double d) {
    double r = (Math.floor(d * 10) / 10.0) % 1.0;
    if (r == 0.5) {
    int i = (int) d;
    return (i + 1) / 2 * 2;
    }
    return (int) (d + 0.5);
    }
    这样么?
      

  5.   

    index为保留小数点后几位,取整写0
      

  6.   

    b.a :  a>5 直接进位 ;a<5 直接舍去; a=5 且b%2=0 直接舍去 ;a=5且b%!=0 进位
    是不是这个意思啊??
      

  7.   

    学习了!
    ROUND_HALF_EVEN
    public static final int ROUND_HALF_EVEN 
    向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。 
    错误:BigDecimal b=new BigDecimal(12.12345);
    System.out.println(b.setScale(4,BigDecimal.ROUND_HALF_DOWN));打印结果为12.1235分析:经过调试发现System.err.println(new BigDecimal(12.12345));结果为12.1234500000000000596855898038484156131744384765625,原来double类型数据只能在计算机中近似使用2进制表示,而0.0000500000000000596855898038484156131744384765625显然是>0.5的只能进一位修改:BigDecimal b=new BigDecimal("12.12345");
    System.out.println(b.setScale(4,BigDecimal.ROUND_HALF_DOWN));打印结果为12.1234