2011-10-10 39 views
1

为了得到小数点值最多两位小数点我使用这个函数。我该如何改变这个函数才能得到类似0.00的效果?

double roundTwoDecimals(double d) {    
    DecimalFormat twoDForm = new DecimalFormat("##.##");   
    return Double.valueOf(twoDForm.format(d)); 

但虽然有一个像“5.50”的值,那么与这个功能,我只有“5.5”。 而不是我想要得到与上述功能5.50那么我应该改变?

请给我更新的功能或任何建议来改变输出像“0.00”。 谢谢。

+0

什么是你想在这里完成?你是否真的想要将这个数字舍去,然后返回一个double?或者你只是想格式化数字显示?你总是*会从这个方法返回一个非格式化的数字,因为'double's不会保留你将数字格式化的前导/尾随零。 –

+0

我只想得到double值的分数值,但它应该有两个小数点。我不会绕过价值。好。 –

+0

@iDroid资源管理器 - 在这里所有用户都告诉同样的事情。 – user370305

回答

2

您的示例适用于将数字四舍五入为2位数。但是你将失去尾随零,因为数字变量(double,float,...)不存储任何格式化信息。

如果你想看到尾随零(如5.50),你必须在格式化输出的数字:

DecimalFormat twoDForm = new DecimalFormat("#0.00");   
System.out.println(twoDForm.format(d)); 
+0

它的工作正常。 –

2

Use the format

new DecimalFormat("#0.00") 

当您使用#,零个值显示为不存在。使用0将确保显示数字或0。

+0

我已经改变了这个甲酸盐的功能,但我仍然得到了同样的结果。 –

+0

仍然没有与这个犯人合作。 –

0

DecimalFormat.format返回一个String(不是StringBuffer),然后获取Double.valueOf(...)。然后返回double值,我们在打印时使用自己的toString()来显示它。您需要对返回的double值运行DecimalFormat.format。

+0

['DecimalFormat#format(double)'](http://download.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#format(double))不会返回一个'StringBuffer '。 –

+0

@RobHruska:谢谢你的帮助。我没有检查java 7.在我看到的Android(http://developer.android.com/reference/java/text/DecimalFormat.html)和java 6(http://download.oracle.com /javase/6/docs/api/java/text/DecimalFormat.html)我没有看到这个方法。我应该进一步搜索。 – mikey

+0

我不想要字符串。我刚才提到“”来区分价值。 –

相关问题