0.ToString(“#。##”)が0.00または少なくとも0ではなく空の文字列を返すのはなぜですか?


114

0.ToString("#.##")空の文字列を返すのはなぜですか?0.00それは、少なくとも0であるべきではありませんか?

回答:



135

フォーマット文字列では#、オプションの文字プレースホルダーを示すためにが使用されるためです。数値を表す必要がある場合にのみ使用されます。

代わりにこれを行うと、次の0.ToString("0.##");ようになります。0

興味深いことに、これを行うと、次の0.ToString("#.0#");ようになります。.0

3桁すべてが必要な場合0.ToString("0.00");0.00


コメントからこの回答まで、あなたの主張は

数値が0の場合、なぜ空の文字列を表示する必要があるのはなぜですか?

応答は簡単です。どのように表示するかを選択できます。それがカスタムフォーマット文字列の目的です。あなたは単にあなたのニーズのために間違ったフォーマット文字列を選択しただけです。


20

Digit Placeholderに関するドキュメントによると。

フォーマットされる値のフォーマット文字列で「#」が現れる位置に数字がある場合、その数字は結果の文字列にコピーされます。それ以外の場合、結果文字列のその位置には何も保存されません。この指定子は、文字列内の数字が「0」のみであっても、有効数字でない場合は「0」文字を表示しません。表示されている数値の有効数字の場合は、「0」文字が表示されます。「##」フォーマット文字列により、値は10進数の前の最も近い数字に丸められ、ゼロからの丸めが常に使用されます。たとえば、34.5を「##」でフォーマットすると、値は35になります。

ゼロを表示する場合は、Zero PlaceHolderを使用します

フォーマットされる値のフォーマット文字列で「0」が現れる位置に数字がある場合、その数字が結果の文字列にコピーされます。小数点の前の左端の「0」と小数点の後の右端の「0」の位置によって、結果文字列に常に存在する桁の範囲が決まります。
「00」指定子を使用すると、値は小数部の前の最も近い桁に丸められ、ゼロからの丸めが常に使用されます。たとえば、34.5を「00」でフォーマットすると、値は35になります。



-1

次のように使用します。

0.ToString("#0.##")

0after #は、値が0の場合は出力値を必ず0に設定し、それ以外の場合は値を表示します。だから、0.0.ToString("#0.##")=0.00および10.ToString("#.##")=10.00

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.