在 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
。
方法三:Double
class构造函数
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();
我正在申请 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
。
方法三:Double
class构造函数
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();