如何在android中添加两个没有指数的double值

时间:2012-03-05 12:17:45

标签: java android

请帮我解决这个问题。我试图从textview获取值并存储为字符串。然后它转换为double。虽然转换最多7个字符正常运行,但如果我尝试添加超过7个结果是1.23456789E8。这是我的代码

String value = tvInput.getText().toString();
\\tvInput is my textView
Double result = 0.0;
Double input1=0.0;
Double input2=0.0;
input=Double.parseDouble(value);
result = input1 + input2;
tvInput.setText(Double.toString(result));

如果我将input1值设为1234567,输入2设为1234567,我得到正确的结果,但是如果将input1设为12345678,输入2设为3.输出为1.2345681E7

5 个答案:

答案 0 :(得分:3)

您获得的价值是正确的,问题在于您打印它的方式。

你依靠toString来获得双输出;如果您想保证不使用指数表示法,则应使用DecimalFormat或String.format格式化它;

DecimalFormat myFormatter = new DecimalFormat("############");
tvInput.setText(myFormatter.format(result));

另见the format documentation

答案 1 :(得分:0)

您描述的行为与javadoc一致。您可以改用String.format

答案 2 :(得分:0)

123456781.2345678E7的数字完全相同。没问题

如果E> 6,则问题在于表示,然后toString()使用科学记数法。您可能希望使用NumberFormat。

答案 3 :(得分:0)

使用String.format:example

class Main
{
  public static void main (String[] args) throws java.lang.Exception
  {
     String i1 = "12345678";
     String i2 = "3";
     double d1 = Double.parseDouble(i1);
     double d2 = Double.parseDouble(i2);
     double d = d1 + d2;
     System.out.println( String.format("%f", d) ); 
  }
}

答案 4 :(得分:-2)

为什么不使用Integer?

String value = tvInput.getText().toString();
\\tvInput is my textView
int result = 0;
int input1 = 0;
int input2 = 0;
input=Integer.parseInt(value);
result = input1 + input2;
tvInput.setText(Integer.toString(result));