double k=1234.5678
long a=(int)k;
明确转型就动丢掉小数信息的,但是不明白什么是把小数放进short

解决方案 »

  1.   

    先取到整数部分,放进long
    再用原数减去整数再乘上小数位数放进short中即可。
      

  2.   

    把这个double 转成string类型,然后用indexOf(".")获得.所在的位置, 再通过substring方法分别取出整数和小数部分。
      

  3.   

    我理解你是不是就想保留4位小数,如果是这样的,那么killme2008的答案再加一句就行了
    double k=1234.5678
    long a=(int)k;
    short s=(short)((k-a)*10000);
    但有个问题是4位小数后面的直接舍去,没有4舍5入,如果要实现4舍5入则如下处理:
    double k=1234.56781;
    long a=(int)k;
    short  s=(((int)((k-a)*100000))-((int)((k-a)*10000))*10)<5 ? (short)((k-a)*10000):(short)(((k-a)*10000)+1);
      

  4.   


    double d = 1234.5678;
    int i = Integer.parseInt((d+"").split(".")[0]);
    short s = Short.parseShort((d+"").split(".")[1]);
      

  5.   

    double a =1234.5678;
    String str = String.valueOf(a);
    int index = str.indexOf(".");
    long b = Long.parseLong(str.substring(0,index));
    short c = Short.parseShort(str.substring(index+1));
    System.out.println("b="+b);
    System.out.println("c="+c);
      

  6.   

    错了:
    double d = 1234.5678; int i = Integer.parseInt((d+"").split("\\.")[0]);
    short s = Short.parseShort((d+"").split("\\.")[1]);