excel中的数值我只想保留4位小数。
excel中单元格是数字型,原值是100.12345,然后设置单元格只显示4位小数,这时变为100.1235,但通过jxl读取时
Cell cell = sheet.getCell(0, 0);
System.out.println(cell.getContents());
输出值是100.1234
Cell cell = sheet.getCell(0, 0);
NumberCell nc=(NumberCell)cell;
System.out.println(nc.getValue());
输出值是100.12345
两个都不是我想要的值,但如果原值是100.12346,则第一次输出值是100.1235就是正确的。
好像这里面是五舍六入。
不知道除了用第二种方法读取数值,然后用
BigDecimal b=new  BigDecimal(nc.getValue()).setScale(4,BigDecimal.ROUND_HALF_UP);
四舍五入外还有没有其他解决方法?

解决方案 »

  1.   

    Math中有这个方法public static long round(double a)返回最接近参数的 long。通过加上 1/2 将该结果舍入为整数,取结果的基数并将其强制转换为 long 类型。换句话说,结果等于以下表达式的值: (long)Math.floor(a + 0.5d)特殊情况是: 如果参数是 NaN,那么结果是 0。 
    如果结果是负无穷大或任何小于或等于 Long.MIN_VALUE 的值,那么结果等于 Long.MIN_VALUE 的值。 
    如果参数是正无穷大或任何大于或等于 Long.MAX_VALUE 的值,那么结果等于 Long.MAX_VALUE 的值。参数:
    a - 舍入为 long 的浮点值。 
    返回:
    舍入为最接近的 long 值的参数值。
      

  2.   

    我想问的是用jxl读取的时候能不能直接就是四舍五入而不是五舍六入