本人运行时出错,请大家指点一下F:\>javac a.java
a.java:6: 运算符 << 不能应用于 double,int
b=(b<<1);
    ^
1 错误

解决方案 »

  1.   

    为什么要加()我不明白???b=b<<1;不就可以了吗???
    不能应用于 double,int 不可能double,int一起不能用,楼主你把源码贴出来吧!!!
      

  2.   

    << 是左移运算符,原则上可以进行左移操作的只能是整数,能转换为2进制,而double的类型无法直接转换成2进制,除非是强制转为整形
      

  3.   

    public class a
    {
    public static void main(String[] s)
    {
    double b=21.345;
    b=((int)(b<<2))>>2;
    System.out.println(b); 
    }
    }
    本意是想保留小数点后2位有效数字的
      

  4.   

    double类型不能使用位运算。
    位运算只能用于byte short char int long 类型
    也就是说位运算只能应用在整型中。
    上面中的(b<<2)这个表达式是错误的,因为b不是整型。
      

  5.   

    b=((int)(b<<2))>>2;
    很明显需要把b先转成整形才可以,改成
    b=((int)b<<2)>>2;
    这样就没有问题
      

  6.   

    移位运算符是按二进制位来进行移位的,并不是按十进制位来移位的。要保留两位小数不能这样做,可以试着用用下面的方法。public class Test {    public static void main(String[] args) {
            double b = 21.345;
            System.out.println(round(b, 2));
        }    public static double round(double num, int digit) {
            if(digit < 1) {
                return num;
            }
            long n = pow10(digit);
            return ((long)Math.round(num * n)) / (double)n;
        }    private static long pow10(int exponent) {
            long result = 1L;
            while(exponent-- > 0) {
                result *= 10L;
            }
            return result;
        }
    }
      

  7.   

    本意是想保留小数点后2位有效数字的有那么复杂吗?
    double d = 123.456;d = 1.0*((long)(d*100))/100;这样就行了。
      

  8.   

    double不能使用移位运算符。
    保留指定数目的小数可以使用System.out.printf()
      

  9.   

    double d = 123.456; 
    d = (int)(d*100)/100.0; 保留两位小数,书上标准范例
      

  10.   

    小弟出来乍到。我想可以使用java.text.DecimalFormat类。
      

  11.   

    double d = 123.456; 
    d = 1.0 * ((long)(d * 100))/100;
    d = (long)(d * 100)/100.0       同理d * 100                         值是:12345.6;
    (long)(d * 100)                 值是:12345;
    1.0 * (long)(d * 100)           值是12345(double类型);
    1.0 * ((long)(d * 100)) / 100;  值是123.45;