0.ToString("#.##")
が空の文字列を返すのはなぜですか? 0.00
または少なくともであってはなりませんか?
文字列形式の#
は、値がオプションであることを示します。出力0.00
を取得するには、次のものが必要です。
0.ToString("0.00");
カスタム数値形式についてはこちら を参照してください。このメソッドに渡すことができます。
フォーマット文字列では、#
がオプションの文字プレースホルダーを示すために使用されるためです。 neededが数値を表す場合にのみ使用されます。
代わりにこれを行うと:0.ToString("0.##");
を取得します:0
興味深いことに、これを行うと:0.ToString("#.0#");
を取得します:.0
3桁すべてが必要な場合:0.ToString("0.00");
は以下を生成します:0.00
コメントからこの回答まで、あなたの議論は
数値が0の場合に空の文字列を見たいと思うのはなぜでしょうか?
応答は簡単です:表示方法を選択できます。それが、カスタムフォーマット文字列の目的です。 必要に応じて間違ったフォーマット文字列を選択しただけです。
Digit Placeholderに関するドキュメントによると。
フォーマットされる値のフォーマット文字列で「#」が表示される位置に数字がある場合、その数字は結果文字列にコピーされます。それ以外の場合、結果文字列のその位置には何も保存されません。この指定子は、文字列内の唯一の数字が「0」であっても、有効数字でない場合は「0」文字を表示しません。表示されている数字の有効数字である場合、「0」文字が表示されます。 「##」形式の文字列により、値は小数点の前の最も近い桁に丸められます。ゼロからの丸めは常に使用されます。たとえば、34.5を「##」でフォーマットすると、値は35になります。
ゼロを表示する場合は、Zero PlaceHolderを使用します
フォーマットされている値のフォーマット文字列で「0」が表示される位置に数字がある場合、その数字は結果文字列にコピーされます。小数点の前の左端の「0」と小数点の後の右端の「0」の位置は、結果文字列に常に存在する数字の範囲を決定します。
「00」指定子を使用すると、値は小数点の前の最も近い桁に丸められます。ゼロからの丸めは常に使用されます。たとえば、34.5を「00」でフォーマットすると、値は35になります。
これを試してください0.ToString("#,##; #,##;0")
最初のセクションは正の値に適用され、2番目のセクションは負の値に適用され、3番目のセクションはゼロに適用されます。