在EditText中将String转换为Double

时间:2015-02-27 08:12:26

标签: java android string performance double

我正在制作一个Android应用程序。用户将在android EditText中输入11-15位数,因为我必须对此进行一些数学工作,我需要将其转换为double,但到目前为止这还不能正常工作

如何在将其解析为double

后获得相同的字符串

到目前为止,这是我的代码:

String Svalue="1101300045"
double Dvalue=Double.parseDouble(Svalue);
System.out.print("Dvalue: "+Dvalue);
Dvalue++; 
Svalue=Double.toString(Dvalue);
System.out.print("Svalue: "+Svalue)

输出:

Dvalue: 1.11013001045.E15 
Svalue: 1.11013001046.E15

期望的输出:

Dvalue: 1101300045
Svalue: 1101300046

4 个答案:

答案 0 :(得分:1)

要格式化Double,请使用NumberFormat实用程序类。

    String Svalue = "1101300045";
    double Dvalue = Double.parseDouble(Svalue);

    NumberFormat nf = NumberFormat.getInstance();
    nf.setGroupingUsed(false);
    System.out.println("Dvalue: " + nf.format(Dvalue));

    Dvalue++;
    Svalue = nf.format(Dvalue);
    System.out.println("Svalue: " + Svalue);

您还可以使用舍入支持格式化十进制值,例如

    Svalue = "1101300045.98765";
    Dvalue = Double.parseDouble(Svalue);

    nf.setMaximumFractionDigits(2);
    System.out.println("Dvalue: " + nf.format(Dvalue));

输出:

Dvalue: 1101300045
Svalue: 1101300046
Dvalue: 1101300045.99

答案 1 :(得分:0)

试试这个 double Dvalue = Double.parseDouble(name.getText()。toString()); System.out.print(" Dvalue:" + Dvalue);

S值= Double.toString(Dvalue); System.out.print(" Svalue:" + Svalue)

答案 2 :(得分:0)

这个问题已经多次回答了。 This回答提供了几种有用的方法。

答案 3 :(得分:0)

方法1:使用Double.parseDouble

public static double parseDouble(String str) throws NumberFormatException 它返回字符串参数表示的double值,并抛出以下异常:

NullPointerException - 如果指定的String str为空。

NumberFormatException - 如果字符串格式无效。对于例如如果字符串为122.20ab,则会抛出此异常。

String str="122.202";
Double var= Double.parseDouble(str);

转换后双变量var值为122.202

方法2:使用Double.valueOf

String str3="122.202";
Double var3= Double.valueOf(str3);

var3的值为122.202

方法3:Double类构造函数

String str2="122.202";
Double var2= new Double(str2);

Double类有一个构造函数,它解析传递的String参数并返回一个double值。

public Double(String s) throws NumberFormatException

构造一个新分配的Double对象,该对象表示由字符串表示的double类型的浮点值。

完整示例:

try{
   //Using parseDouble
   String str="122.202";
   Double var= Double.parseDouble(str);
   System.out.println(var);

   String str2="122.202";
   Double var2= new Double(str2);
   System.out.println(var2);

   //Using valueOf method
   String str3="122.202";
   Double var3= Double.valueOf(str3);
   System.out.println(var3);

}catch (NullPointerException e){ e.printStackTrace();}
 catch (NumberFormatException e){ e.printStackTrace();}
}

输出:

122.202
122.202
122.202

另外,这里是如何从EditText获取文字:

EditText et = (EditText) findViewById(R.id.myEditText);
String text = et.getText().toString();

Source