我理解你是不是就想保留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);
double d = 1234.5678; int i = Integer.parseInt((d+"").split(".")[0]); short s = Short.parseShort((d+"").split(".")[1]);
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);
错了: double d = 1234.5678; int i = Integer.parseInt((d+"").split("\\.")[0]); short s = Short.parseShort((d+"").split("\\.")[1]);
再用原数减去整数再乘上小数位数放进short中即可。
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);
double d = 1234.5678;
int i = Integer.parseInt((d+"").split(".")[0]);
short s = Short.parseShort((d+"").split(".")[1]);
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);
double d = 1234.5678; int i = Integer.parseInt((d+"").split("\\.")[0]);
short s = Short.parseShort((d+"").split("\\.")[1]);