我不确定这是我或什么,但我有一个问题,将双精度转换为字符串。
这是我的代码:
double total = 44;
String total2 = Double.toString(total);
是我做错了什么,还是我漏了一步。
我得到错误NumberFormatException时,试图转换这个。
totalCost.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
try {
double priceG = Double.parseDouble(priceGal.getText().toString());
double valG = Double.parseDouble(volGal.toString());
double total = priceG * valG;
String tot = new Double(total).toString();
totalCost.setText(tot);
} catch(Exception e) {
Log.e("text", e.toString());
}
return false;
}
});
我试图在onTouchListener中做到这一点。我张贴更多的代码,基本上当用户触摸编辑文本框,我想要的信息计算一个填充编辑文本框。
使用Double.toString(),如果数字太小或太大,您将得到这样的科学符号:3.4875546345347673E-6。有几种方法可以更好地控制输出字符串格式。
double num = 0.000074635638;
// use Double.toString()
System.out.println(Double.toString(num));
// result: 7.4635638E-5
// use String.format
System.out.println(String.format ("%f", num));
// result: 0.000075
System.out.println(String.format ("%.9f", num));
// result: 0.000074636
// use DecimalFormat
DecimalFormat decimalFormat = new DecimalFormat("#,##0.000000");
String numberAsString = decimalFormat.format(num);
System.out.println(numberAsString);
// result: 0.000075
使用String.format()将是最方便的方式。
这是一个非常老的帖子,但是java双精度到字符串的转换可以通过许多方式完成,我将通过示例代码片段逐个介绍它们。
1. 使用+运算符
这是java中将double转换为字符串的最简单方法。
double total = 44;
String total2 = total + "";
2. Double.toString ()
我们可以使用Double类的toString方法来获得以小数点表示的Double的字符串表示。下面的代码片段向您展示了如何在java中使用它将double转换为字符串。
double total = 44;
String total2 = Double.toString(total);
3.String.valueOf ()
double total = 44;
String total2 = String.valueOf(total);
4. 新双(双l)
带有双参数的双构造函数在Java 9中已弃用,但您应该知道这一点。
double total = 44;
//deprecated from Java 9, use valueOf for better performance
String total2 = new Double(total).toString();
5. String.format ()
我们可以在程序中使用Java字符串格式方法将double转换为字符串。
double total = 44;
String total2 = String.format("%f", total);
6. DecimalFormat
我们可以使用DecimalFormat类将double类型转换为String类型。我们还可以使用指定的小数位和向上四舍五入的字符串表示。
double total = 44;
String total2 = DecimalFormat.getNumberInstance().format(total);
//if you don't want formatting
total2 = new DecimalFormat("#.0#").format(total); // rounded to 2 decimal places
total2 = new DecimalFormat("#.0#").format(44); // rounded to 2 decimal places
7. 字符串生成器,字符串缓冲区
我们可以使用StringBuilder和StringBuffer append函数将double转换为string。
double total = 44;
String total2 = new StringBuilder().append(total).toString();