我正在编写一个将双打更改为数组的程序。所以,如果我有这个:
double d = 1.23456
我想要一个像这样的数组:
array[0] = 1
array[1] = 2
array[2] = 3
等等。
另一个例子:
double d = 3.1415926
到
array[0] = 3
array[1] = 1
array[5] = 9
有些人想看我的代码,所以这里是:
long l = (new Double(3.1415926)).longValue();
String s = Long.toString(l);
System.out.println(l); //prints 3, so splitting won't have any effect
System.out.println(s); //prints 3, so splitting won't have any effect
答案 0 :(得分:3)
也许最简单的解决方案是从double创建一个字符串:
String s = Double.toString(d);
然后解析它跳过小数点,然后填充你的数组。
答案 1 :(得分:1)
请试试这个
public static void main(String[] args)
{
Double d = 1.2546;
String s = d.toString();
int a[] = new int[s.length()];
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)!='.')
{
a[i]=Integer.parseInt(s.charAt(i)+"");
System.out.println(a[i]);
}
}
}
输出
1
2
5
4
6
答案 2 :(得分:0)
double d = 1.23456;
ArrayList<Integer> arrayList = new ArrayList<>();
while (d != 0) {
arrayList.add((int) d);
d = (d - ((int) d)) * 10.0;
}
System.out.println(arrayList.toString());
可能不是最佳解决方案,但它应该有效。
答案 3 :(得分:0)
double d = 3.14159;
String s = String.valueOf(d); // convert the double to a string
s = s.replace(".", ""); // delete all dots from the string
int[] ints = new int[s.length()]; // create an array to hold each digit
for (int i = 0; i < ints.length; i++) { // foreach character in the string
// convert the next character in the string to an int and save it to array
ints[i] = Integer.parseInt(s.substring(i, i + 1));
}
// print the array
for (int i : ints) System.out.println(i);