2017-03-16 84 views
0

这段代码的DecimalFormat将返回-0.00

DecimalFormat formatter = new DecimalFormat("0.00"); 
return formatter.format(-0.001); 

回报

“-0.00”

,我真的很喜欢(和期望) “0.00”

我知道我可以通过编写一个DecimalFormat的子类来解决这个问题,但是有没有办法使用标准的DecimalFormat来做到这一点?

编辑:我只想改变结果是“-0.00”的特殊情况。所有其他负值应保持不变,例如:-9.1 - >“-9.10”

+0

你是说你想永远返回数字的绝对版本?或者仅在'-0.00'的情况下? – nbokmans

+0

仅限于-0.00的情况。我仍然期望,例如,-9.01 - >“-9.01”和56.001 - >“56.00” – Steve

+0

责备[IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point),'-0'是' 0“,负值设置。另见[signed zero](https://en.wikipedia.org/wiki/Signed_zero)。 –

回答

0

您可以在返回字符串时测试它。

我不相信格式会操纵价值。 它只能格式化它。也许你可以先把它围起来,然后格式化它?

DecimalFormat formatter = new DecimalFormat("0.00"); 
double x = -0.001; 
double y = Math.round(x*100.0)/100.0; 
return formatter.format(y); 
+0

如果我必须在每个地方添加这两行,我使用DecimalFormatter,最好是创建一个子类并覆盖格式方法,正如我在提问中提到的那样。 – Steve