Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何将一个double分割成3个较小的double,并将这些新的double设置为变量?_Java - Fatal编程技术网

在Java中,如何将一个double分割成3个较小的double,并将这些新的double设置为变量?

在Java中,如何将一个double分割成3个较小的double,并将这些新的double设置为变量?,java,Java,假设我有一个15位的双精度: 123451234512345 我怎样才能把它分成三个5位数的两位数?像这样: 12345 12345 12345 然后将每个新的双精度设置为一个新变量 a=12345,b=12345,c=12345 非常感谢您的帮助。谢谢。将其转换为字符串将其分成三部分,然后将字符串转换为双精度 String text = 123451234512345+""; List<String> strings = new ArrayList<String>();

假设我有一个15位的双精度:

123451234512345

我怎样才能把它分成三个5位数的两位数?像这样:

12345 12345 12345

然后将每个新的双精度设置为一个新变量

a=12345,b=12345,c=12345


非常感谢您的帮助。谢谢。

将其转换为字符串将其分成三部分,然后将字符串转换为双精度

String text = 123451234512345+"";
List<String> strings = new ArrayList<String>();
int index = 0;
while (index<text.length()) {
    strings.add(text.substring(index, Math.min(index+5,text.length()));
    index+=5;
}
double a = Double.parseDouble(strings[0]);
double b = Double.parseDouble(strings[1]);
double c = Double.parseDouble(strings[2]);
String text=123451234512345+“”;
列表字符串=新的ArrayList();
int指数=0;

而(index将其转换为字符串将其分为三部分,并将字符串转换为双精度

String text = 123451234512345+"";
List<String> strings = new ArrayList<String>();
int index = 0;
while (index<text.length()) {
    strings.add(text.substring(index, Math.min(index+5,text.length()));
    index+=5;
}
double a = Double.parseDouble(strings[0]);
double b = Double.parseDouble(strings[1]);
double c = Double.parseDouble(strings[2]);
String text=123451234512345+“”;
列表字符串=新的ArrayList();
int指数=0;

当(索引在循环中时,取原始数字,然后除以100000(
%100000
)得到余数,然后取下一个5位数字。将原始数字除以100000(
/100000
)。如果不是零,则继续循环,否则已提取所有5位数字


如果您处理的是15位数字,那么请使用
long
来存储该数字,因为它太大,无法放入
int
循环中,取原始数字,然后在除以100000(
%100000
)时获取余数以获得下一个5位数字。将原始数字除以100000(
/100000
).如果不是零,则继续循环,否则您已提取所有5位数字


如果您处理的是15位数字,那么请使用
long
来存储该数字,因为它太大,无法放入
int

中。请尝试使用此方法。首先将数字转换为字符串。然后在每5位数字后放置一个空格。然后按空格拆分

String str = "123451234512345";
String []splits = str.replaceAll("(\\d{5})", "$1 ").split(" "); 
for(String s: splits){
    System.out.println(s);
}
另一个更好的选择是使用模式匹配器

String str = "123451234512345";
Pattern pattern = Pattern.compile("(\\d{5})");
Matcher m = pattern.matcher(str);
while(m.find()) {
    System.out.println(m.group(0));
}

请随意将数组中的值转换为整数变量。

试试这个。首先将数字转换为字符串。然后在每5位数字后放置一个空格。然后按空格拆分

String str = "123451234512345";
String []splits = str.replaceAll("(\\d{5})", "$1 ").split(" "); 
for(String s: splits){
    System.out.println(s);
}
另一个更好的选择是使用模式匹配器

String str = "123451234512345";
Pattern pattern = Pattern.compile("(\\d{5})");
Matcher m = pattern.matcher(str);
while(m.find()) {
    System.out.println(m.group(0));
}

请随意将数组中的值转换为整数变量。

如果使用长
表示,则可以使用模运算符
%
和整数除法
/
,如下所示:

long myInput = 123451234512345;
long a = myInput % 100000;
long b = (myInput / 100000) % 100000;
long c = (myInput / (100000 * 100000)) % 100000;
以一种更通用的方式,可以在循环中使用:

long myInput = 123451234512345;
long a = myInput % 100000;
myInput /= 100000;
long b = myInput % 100000;
myInput /= 100000;
long c = myInput % 100000;

注意:第二个版本修改变量
myInput

如果使用
long
表示,则可以使用模运算符
%
和整数除法
/
,如下所示:

long myInput = 123451234512345;
long a = myInput % 100000;
long b = (myInput / 100000) % 100000;
long c = (myInput / (100000 * 100000)) % 100000;
以一种更通用的方式,可以在循环中使用:

long myInput = 123451234512345;
long a = myInput % 100000;
myInput /= 100000;
long b = myInput % 100000;
myInput /= 100000;
long c = myInput % 100000;


注意:第二个版本修改了变量
myInput

你真的得到了一个整数吗?因为你的示例值会溢出。事实上,现在我想起来了,由于我计划使用它,它无论如何都需要是一个双精度的。这有帮助吗?我会编辑我的帖子。谢谢你的提醒。如果它真的存在的话y是一个15位或更少的整数,您可以使用
long
。如果您需要非常大的数字,您需要使用字符串或类似于
biginger
的东西。非常有用,谢谢。您知道
double
s不是整数值吗?
long
可能更合适。您是否真的以整数的形式获取值ger?因为你的示例值会溢出。事实上,现在我想起来了,因为我打算用它做什么,它无论如何都需要一个双精度。这有帮助吗?我会编辑我的文章。谢谢你的提醒。如果它真的是一个15位或更少的整数,你可以使用
long
。如果你需要非常大的数字,你可以我需要使用字符串或类似于
biginger
的东西。非常有用,谢谢。你知道
double
s不是整数值吗?
long
可能更合适。这对double有效吗?抱歉,谢谢你的帮助。对于
double
s,精度应该小于或等于
1
。它适用于最大为2^52的值。任何更高的值,
double
的精度都大于
1
,并且您可能存储的值与您指定的值不同。因此,您最好使用
long
,它可以转到2^63-1。这对double有效吗?抱歉,谢谢您的帮助。对于
double
s,精度应小于或等于
1
。它将适用于高达2^52的值。如果精度更高,
double
的精度大于
1
,并且您可能存储的值与指定的值不同。因此,您最好使用
long
,它可以达到2^63-1.IMHO,使用字符串对于计算机更容易处理的非常简单的数字运算来说,这是一项艰巨的工作。@Joffrey是的,你是对的。但是可以很快写出。嗯,我真的相信我的答案要容易得多^^^找到你使用的合适的正则表达式会花费我更多的时间,但这是非常主观的,我认为同意。也许只有我一个人。@Joffrey biginteger总共有30个
12345
:-)一个简单的循环就可以了,我想它会更简单;)嗯,对于一个非常简单的数字运算来说,使用字符串来实现这个目的需要做很多工作,而计算机处理起来要容易得多。@Joffrey是的,你是对的。但是可以很快写出来。我真的相信我的答案要容易得多^^找到你使用的合适的正则表达式需要更多的时间,但这是非常主观的,我同意。也许只有我一个人。@Joffrey大整数总共有30个
12345
:-)一个简单的循环就可以了,我想它会更简单;)对于计算机更容易处理的非常简单的数字操作来说,使用字符串来实现这一目的需要做很多工作