12

小数は、数値を格納するために必要な末尾のゼロの数を何らかの形で記憶していることを知りました。つまり、分数のサイズを記憶しています。

例えば:

123M.ToString() ==> resuls in: 123
123.00M.ToString() ==> resuls in: 123.00
123.450M.ToString() ==> resuls in: 123.450

これらの「不要な」末尾のゼロを取り除くためのフォーマット文字列または別のトリックを探していますが、有効数字は保持しています。そう:

123M.ToString() ==> resuls in: 123
123.00M.ToString() ==> resuls in: 123
123.450M.ToString() ==> resuls in: 123.45

新しい文字列の末尾にあるゼロを削除することは、私にとって現実的なオプションではありません。文字列に分数が含まれているかどうかを確認し、含まれている場合はオプションの「.」も削除する必要があるためです。または文化などに応じて「、」。

4

3 に答える 3

15

それを行うにはいくつかの方法がありますが、とにかく String オブジェクトに変換しているので、次のようなことを試すことができると思います:

myDecimalVariable.ToString("G29");

または、上記のコードを使用して123.00M、10 進数であると仮定します。

123.00M.ToString("G29");

その簡潔な例がどのように機能するかの説明は次のとおりです。

数値を含む G フォーマットは、有効桁数をフォーマットすることを意味します。29 は Decimal が持つことができる最上位桁であるため、これにより、丸めを行わずに末尾のゼロが効果的に切り捨てられます。

于 2013-07-07T21:19:57.837 に答える
0

フォーマット指定子ゼロを適用するだけで、末尾のゼロが削除されます。

string test = (1.23M * 100M).ToString("0");
//prints 123.
string test2 = 123.450M.ToString(".00");
//prints 123.45.
string test3 = 123.450M.ToString().Trim('0');
于 2013-07-07T21:36:24.787 に答える