2016-03-04 105 views
1

如何将"6020494385.89982"字符串值转换为双精度值?如何将6020494385.89982字符串值转换为双精度值

String ss = "6020494385.89982"; 
double dd = Double.parseDouble(String.valueOf(ss)); 
System.out.println(dd); 

我得到的输出作为 6.02049438589982E9但我想6020494385.89982作为双重价值。

+1

'6.02049438589982E9'只是double的字符串表示,只检查'dd == 6020494385.89982;' – Berger

+0

谢谢Berger。是的dd == 6020494385.89982工作正常。但是,我将如何从6.02049438589982E9获得实际值6020494385.89982。 –

回答

1

6.02049438589982E9相同6020494385.89982

6.02049438589982E9 = 6.02049438589982 X 10^9

存储在双值6020494385.89982然而,当你把它打印出来,它代表了这个格式:6.02049438589982E9

5

使用一个DecimalFormat对象应该伎俩

String ss = "6020494385.89982"; 
double dd = Double.parseDouble(String.valueOf(ss)); 
System.out.println(new DecimalFormat("#0.00000").format(dd)); 

或者你可以使用System.out#printf()

System.out.printf("%.5f", dd); 

因为System.out.println与双精度不会在例如这种特殊情况下工作,工作的一种特殊方式。

+0

谢谢亚辛。有效。 –

2

该数字是正确的。 6.02049438589982E9只是科学记数法,当您打印double时,这是默认值。如果你想在非科学记数法,你可以只使用printf代替println

System.out.printf("%f\n", dd); 
+0

'System.out.printf'和'System.out.format'有什么区别? –

+0

@WilliamRosenbloom这是'System.out.printf'的JavaDoc的一部分:'调用out.printf(format,args)形式的这种方法的行为与调用out.format(format ,args)' –

+0

@WilliamRosenbloom我认为你的意思是String.format –

1

你并不需要,如果你到底想要的格式相同的电流值的表示转换成双ss变量。

但是,如果您需要转换为其他用途,然后需要以后以其他格式显示,或者您可以使用DecimalFormat

相关问题