2017-03-16 38 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