尝试通过点将双数分成两个小数部分。像这样:1.9分为1分和9分; 0.16分为0和16;
这是我做的,但似乎有点多余,最好的方法是什么?
原点编号将始终为Just 0.x或1.x或0.xx或1.xx和xx> 10
double d = 1.9;
int a, b;
String dString = Double.toString(d);
String aString = dString.substring(0, 1);
String bString = dString.substring(2);
a = Integer.parseInt(aString);
b = Integer.parseInt(bString);
我这样做的方式似乎使用了很多字符串转换,我认为这种转换非常有效。
答案 0 :(得分:10)
您也可以尝试这种方式
double val=1.9;
String[] arr=String.valueOf(val).split("\\.");
int[] intArr=new int[2];
intArr[0]=Integer.parseInt(arr[0]); // 1
intArr[1]=Integer.parseInt(arr[1]); // 9
答案 1 :(得分:2)
要将小数部分作为int
并不是真正遵循任何标准,那么您将坚持使用您的特殊解决方案。获得小数点之前的值可以简化为简单的转换:
double d = 1.9;
int a, b;
String dString = Double.toString(d);
String bString = dString.substring(2);
a = (int) d;
b = Integer.parseInt(bString);
请注意,如果数字为10或更大,则substring()
和parseInt()
会失败。您可能希望将substring()
调用更改为:
String bString = dString.split("\\.")[1];
答案 2 :(得分:2)
您可以将double视为字符串,并将其拆分为小数位。
double d = 13454.92345;
String bob = Double.toString(d);
String[] convert = bob.split("\\.");
int a = Integer.parseInt(convert[0]);
int b = Integer.parseInt(convert[1]);
System.out.println(a); // 13454
System.out.println(b); // 92345
答案 3 :(得分:1)
double num=12.5;
String str=Double.toString(num);
String strarray[]=str.split("\\.");
现在strarray[0]
将持有12,strarray[1]
将拥有5.您可以通过编写以下代码将它们转换为整数:
int num1=Integer.parseInt(strarray[0]);
int num2=Integer.parseInt(strarray[1]);
答案 4 :(得分:1)
double d = 1.9;
String str = Double.toString(d);
String strArray[] = str.split("\\.");
int a = Integer.parseInt(strArray[0]);
int b = Integer.parseInt(strArray[1]);
System.out.print(a + " - " + b);
试试这个。这将有效。
答案 5 :(得分:0)
这是一个两行版本:
int a = (int)d;
int b = Integer.parseInt((d + "").split("\\.", 2)[1]).replaceAll("^$", "0"));
第一部分很简单 - 只需转换为int
,它会自动删除数字的任何小数部分。
使用Strimg方法的第二部分是最简单的 - 在点上拆分字符串版本并使用第二部分。注意添加生成字符串的""
,以及没有小数部分的边缘情况的处理,其中3
作为双精度打印为3.
- 如果结果是空白(由要拆分的第二个参数保证),然后转换为零。
答案 6 :(得分:0)
此解决方案几乎适用于小数部分的任何长度,并且不使用字符串。 例如,接受的答案不适用于0.16
double d = 123.456
long a = (long) d;
double f = d - a;
while (Math.abs((long) f - f) > 0.000001) f *= 10;
long b = (long) f;
// a = 123
// b = 345
答案 7 :(得分:0)
这是另一种方法:
double d=1.9;
int a;
int b;
a = (int) d/10;
b = (int) d%10;
System.out.print("a");
System.out.print("b");
答案 8 :(得分:0)
double dub=1234.5678987;//Variable to be manipulated
long lon=0; //To store before decimal point.
short sh=0;//To store after decimal point.
int deci=10000; //to 4 decimal places
lon=(int)dub;// get the integer part of the number stored in long
sh=(short)((dub-(double)lon)*deci);//deci to required decimal places.
System.out.println(""+lon+"."+sh);
答案 9 :(得分:-1)
我尝试了分拆"。"然后只需解析整数的字符串。
String a="";
double x = 2.4;
a=x+"";
String [] v =a.split("\\.");
int before = Integer.parseInt(v[0]);
int after = Integer.parseInt(v[1]);