簡體   English   中英

Java或groovy中的字符串格式負數減號(無括號)

[英]String format negative number minus sign (no parantheses) in java or groovy

我已經使用String.format('$%(,. 2f',-125.433)將字符串輸出為$(125.43)。

String.format('X',-125.43)中應該是X以輸出為-$ 125.43即X. 前面加減號?

或者,我該如何做呢?

或者您可以使用java.text.DecimalFormat

DecimalFormat format = new DecimalFormat("$#,###0.000;$-#,###0.000");
String formatted = format.format(-125.433);
System.out.println(formatted); // prints $-125.433

或者,您可以堅持使用@biplavo在下面的注釋中提到的字符串格式。

String.format("$%,.3f", -125.433)

我對Groovy不熟悉,因此我不會嘗試提供該解決方案。 但是,我可以肯定地說,這是String.format並不是特別有用的情況。 我只用?:像這樣:

public static String formatMoney(double d){
    return d>=0?"$"+d:"-$"+(-d);
}

當然可以內聯; 您也可以在兩種情況下都用基本格式設置替換d

Groovy的!

String format(BigDecimal num = 0.0) {
    num = ( num ?: 0.0 ).setScale( 2, BigDecimal.ROUND_HALF_UP )
    num >= 0 ? /$($num)/ : /-$${num.abs()}/
}

assert format(123.433  ) == /$(123.43)/
assert format(-123.433 ) == /-$123.43/
assert format(1        ) == /$(1.00)/
assert format(0        ) == /$(0.00)/
assert format(111      ) == /$(111.00)/
assert format(-101     ) == /-$101.00/
assert format(-1123.435) == /-$1123.44/
assert format(1123.435 ) == /$(1123.44)/
assert format(null     ) == /$(0.00)/
assert format(         ) == /$(0.00)/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM