2014-04-11 32 views
0

我知道这已经被很多质疑的时候,但我想在其他线程所有的解决方案,我不能找到一个符合我想要的东西......格式化一个数字,小数点后两位没有四舍五入的情况,并转换到双

所以我有一个像这样的输入-9.22841这是读作为一个字符串,我想要做的是将此数字格式化为像这样-9.23这样的小数点后两位小数,然后将其转换为双精度,而不会丢失这种格式...

我尝试了很多方法,如String.format("%.2f",number)和下面的一个...

String l = -9.22841 
    DecimalFormat df = new DecimalFormat("#,00"); 
    String tmp =df.format(l); 
    double t = Double.parseDouble(tmp); 

这一个:

String l = -9.22841 
    DecimalFormat df = new DecimalFormat("#.00"); 
    String tmp =df.format(l); 
    double t = Double.parseDouble(tmp); 

,但每次我尝试转换到一倍String.format("%.2f",number)DecimalFormat df = new DecimalFormat("#.00");给出错误转换为加倍

,当我做到这一点:

DecimalFormat df = new DecimalFormat("#,00"); 

输出是错误的,是这样的-9.23它应该是-9.22

感谢您的时间...

+0

确切地说,你试图“转换为双倍”? –

+0

我不确定你为什么使用任何格式的逗号... –

+0

(我也遇到了麻烦,确切地说是否要解析,格式化或解析两次......这对你有帮助, d将您的问题限制为* 1 *操作,例如从'double'格式化为'String',带有样本输入和预期输出。) –

回答

1

你可以只砍掉的字符串中的小数点后两个空间:

String number = "-9.22841"; 
String shorterNumber = number.substring(0, number.indexOf(".")+3); 
double t = Double.parseDouble(shorterNumber); 
System.out.println(t); 
+0

这是exaclty我想...非常感谢您的快速答案... – exceltior

1

。这是你想要的东西:

String number = "-9.22841"; 
DecimalFormat formatter = new DecimalFormat("0.00"); 
formatter.setRoundingMode(RoundingMode.DOWN); 
number = formatter.format(Double.valueOf(number)); 
System.out.println(number); 

输出将是:

-9,22

相关问题