2016-03-28 59 views
0

我正在处理一个项目,并且在解析数字时遇到了一些问题。我不知道为什么我会得到奇怪的结果。解析JFormattedTextField,操作数据并解析回字符串

首先我有一个拥有12位数字,像这样一个JFormattedText场:

referenceNumberField = new JFormattedTextField(nf); 
     referenceNumberField.setText("371260062101009"); 
     referenceNumberField.setColumns(12); 
     panel5.add(referenceNumberField); 

有一个在我的程序循环进一步导致要写入次数无限量这个数字。我被要求确保在每次写入数字时都不会改变数字的数量。为此,我决定将当前的计数器值添加到每次运行的数字中,因此它总是会有所不同,但仍然是12位数字。

要开始我试图解析JFormattedTextField到一个字符串。

String referenceStartingString = referenceNumberField.getText(); 

这部分工作正常。接下来我想把它变成一个双重的,所以我可以操纵它。

double referenceNumberDouble = Double.parseDouble(referenceStartingString); 
        System.out.println("Reference Number Double: "+referenceNumberDouble); 

我遇到的问题真的在于此。结果我从运行时得到的是这样的:

Reference Number Double: 3.71260062101009E14 

我不知道为什么小数已加入我也不是知道为什么正是“E”是数。我认为这代表着指数,如果数量超过双倍的限制(我不认为这样做)只显示了..

只是为了澄清下一阶段是

把我的柜台到双

double countDouble = (double) j; 

添加两者结合起来:

double referenceTotal = referenceNumberDouble + countDouble; 

和转回到一个字符串..

String referenceString = String.valueOf(referenceTotal); 

不能将字符串变成双倍我不能再走了,我感谢任何帮助!

回答

1

E表示*10^。这是因为int的最大值约为2000000000.尝试解析为long而不是int。 Long.parselong()

+0

谢谢!我应该想到这一点,但我认为,双可以举行一个非常大的数字..我会切换到很长时间,并从那里去。 10分钟强制等待后,我会接受你的答案。 – jesric1029