10

.NET では、小数 (金額) を数字のみの文字列に変換する必要があります。つまり、123,456.78 -> 12345678 です。

と思いました

var dotPos = amount.ToString().LastIndexOf('.');
var amountString = amount.ToString().Remove(dotPos);

私の問題、または少なくともその一部を解決しますが、期待どおりには機能しませんでした。おそらく、多くのコードを記述したり、同様の目的のために既に設計されたものを使用したりせずに、これを実行しようとしています。

4

8 に答える 8

9

あなたはそれが量だと言うので、私は小数点以下2桁を期待しています. どうですか:

 var amountstring = (amount * 100).ToString();

区切り記号なしでセント値を取得するには?

または多分

var amountString = ((int)(amount * 100)).ToString();

小数が残らないようにします。

EDIT
へのキャストがintあなたが望むものではない場合( Math.Floor のような余分な小数を無視するだけです)、次のようにMath.Roundオーバーロード1つを使用することもできます:

var amountString = Math.Round(amount * 100, MidpointRounding.ToEven).ToString();

MidpointRounding.ToEven ( "Banker's Rounding"とも呼ばれます) は、.5 値を常に次に高い値に丸めるのではなく、最も近い偶数値に丸めます。

于 2013-07-23T12:35:56.777 に答える
2

キャストは必要ありません。小数がどこにあるかを知る必要もありません。Linq ももちろん必要ありません。これは文字通り、正規表現の教科書ケースです。

Regex regx = new Regex("[^0-9]");
var amountString = regx.Replace(amount, "");

これ以上簡単なことはありません。また、他の奇妙な通貨文字、または任意の文字を含む文字列を渡すことができ、得られるのは 10 進文字列だけです。

于 2013-07-23T12:40:36.290 に答える
0

これがあなたが探しているものだと思います:

value.ToString("D")

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

于 2013-07-23T12:50:23.203 に答える