对于double类型的表示,有些值计算机只能是约等于,比如小数点后第一位是0.5,第二位是0.25,那么对于有些值就无法精确表示,所以你的结果是不对的,或者说是不精确的。你只能对这种double值取小数点后几位,没办法。:(

解决方案 »

  1.   

    用BigDecimal类型来做就可以了。
      

  2.   

    只能通过格式化,double的精度是多少就显示多少的
    java.text.NumberFormat
      

  3.   

    这是因为double、float的精度造成的
    解决的办法是自己写一个方法来转换:
    public static double formatDouble(double d, int decimalDigits) {
    //精确到小数点后两位
    return (double) Math.round(d * 10 * decimalDigits) / (10 * decimalDigits);
    }