数値を小数点以下 2 桁に四捨五入またはパディングし、負の数値を括弧で囲んで表示する文字列形式を作成しようとしています。これは WPF アプリケーションにありますが、すべての .net StringFormat ユース ケースに適用されます。例えば:
- 2.0 -> 2.00
- -2.0 -> (2.00)
- 0.01 -> 0.01
- -0.01 -> (0.01)
- 0.001 -> 0.00
- -0.001 -> (0.00)
最後の 1 つは、ゼロに丸められた非常に小さな負の数で、これが問題です。私はまだそれが否定的であることを括弧で示したいと思っています。
私の最初のバージョンは、次のような文字列形式でした:
{0:#,##0.00 ;(#,##0.00)}
正/負のスイッチを適用する前に数値を丸め、0.00 が負ではないと見なすため、これは機能しません。
次に、これを試して、ブラケットロジックを数値の前後の独自のフォーマットブロックに分離しました。
{0:;(}{0:#,##0.00 ;#,##0.00}{0:;)}
ただし、奇妙なことに、これは元の例と同じ動作を示します。-0.01 では正しく機能しますが、-0.001 のブラケットは表示されません。どういうわけか、最初と最後のトークンは、中央の数値表示トークンの丸め動作を拾い上げているに違いありません。
これをフォーマットする方法についてアイデアを持っている人はいますか?