2014-09-20 138 views
0

我想在Java中将字符串数字转换为两位小数。我在satckoverflow上看到很多帖子,但不知何故,我得到一个异常。如何将字符串数字转换为Java中的两位小数三位?

String number = "1.9040409535344458"; 
String result = String.format("%.2f", number); 

System.out.println(result); 

这是我得到的例外 -

java.util.IllegalFormatConversionException: f != java.lang.String 

我想有1.904作为输出。有谁知道我在这里做什么错?

+0

您的号码变量是String而不双或浮动。 – 2014-09-20 19:43:40

+2

将字符串转换为数字,然后使用该格式。 – Henry 2014-09-20 19:43:55

+0

我也做过'String.format(“%。2f”,Integer.parseInt(number));'这次我得到一个异常为'java.lang.NumberFormatException:对于输入字符串:“1.9040409535344458”' – john 2014-09-20 19:44:44

回答

1

您可以尝试使用NumberFormat。例如:

String number = "1.9040409535344458"; 
NumberFormat formatter = new DecimalFormat("#0.000"); 
String result = formatter.format(Double.valueOf(number)); 

System.out.println(result); 
0

只是申报数量为双:

Double number = 1.9040409535344458; 

,而不是

String number = "1.9040409535344458"; 

OUTPUT:

1.90 
0

您正在使用的格式并不意味着一个String。我建议将String转换为double或将其存储为double。将String转换为double,并将double转换为String.format

0

你应该将字符串先转换成双,然后更改十进制值

String number = "1.9040409535344458"; 
double result = Double.parseDouble(number);//converts the string into double 
result = result *100;//adjust the decimal value 
System.out.println(result); 
+0

你试过了你的代码片段吗?它是否做OP的要求? – Henry 2014-09-21 05:23:54

相关问题