在 EditText 中将 String 转换为 Double

convert String to Double in EditText

我正在申请 android。用户将在 android EditText 中输入 11-15 位数字,因为我必须对此进行一些数学计算,不,我需要将其转换为双精度,但到目前为止效果不佳

如何在将其解析为 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

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

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

要格式化 Double,您可以使用 NumberFormat 实用程序 class。

    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

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

方法一:使用Double.parseDouble

public static double parseDouble(String str) throws NumberFormatException 它 returns 由字符串参数表示的双精度值并抛出以下异常:

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

NumberFormatException – 如果字符串格式无效。例如如果字符串是 122.20ab 将抛出此异常。

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

双变量 var 转换后的值将是 122.202

方法二:使用Double.valueOf

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

var3 的值将是 122.202

方法三:Doubleclass构造函数

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

Double class 有一个构造函数,它解析传递的 String 参数和 returns 双精度值。

public Double(String s) throws NumberFormatException

构造一个新分配的 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.