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