请帮我解决这个问题。我试图从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
答案 0 :(得分:3)
您获得的价值是正确的,问题在于您打印它的方式。
你依靠toString来获得双输出;如果您想保证不使用指数表示法,则应使用DecimalFormat或String.format格式化它;
DecimalFormat myFormatter = new DecimalFormat("############");
tvInput.setText(myFormatter.format(result));
答案 1 :(得分:0)
您描述的行为与javadoc一致。您可以改用String.format。
答案 2 :(得分:0)
12345678
和1.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));