-3

アプリケーションで10進型を使用しており、値を文字列として受け入れる従来のWebサービスにその値を文字列として送信する必要があります。その支払い額なので、次のようになります。

1000 => "100000"(1000ドルと00セント)
131.11 => "13111"

最初は100を掛けると思っていたのですが、期待通りに動かない場合がありました。

編集: OK私は明確にします:

decimal val = 145.99m;
Console.WriteLine((val * 100).ToString());

結果:

14599.00

しかし、反対側が期待している値は145ドルと99セントなので、小数点なしで14599が本当に必要です。

String.Replace( "。00"、string.Empty)のようなことをするのではなく、別の方法があるのではないかと思っていましたか、それともこれが唯一の方法ですか?

4

3 に答える 3

3

小数点以下0桁にしたい場合は、を実行できますmyDecimal.ToString("0");

例えば:

decimal myDecimal = 25.99m;
(myDecimal*100m).ToString("0"); // 2599

一方、小数点以下の桁数が多い場合:

decimal myDecimal = 3.14159m;
(myDecimal*100m).ToString("0"); // 314

編集:小数点以下の桁数が余分にある場合は、0.5アウェイラウンドを実行します。(私の経験では、VS2008)。

于 2012-06-28T17:02:32.280 に答える
0

単純にfloatに変換し、100で除算してから、stringに変換することができます(数値を整数として格納すると仮定します)。

于 2012-06-28T16:56:06.993 に答える
0

100を掛けてから、整数ベース(数学的な意味では整数)にキャストして小数部分を切り捨て、結果をToString()にすることができます。

decimal x = 45.13m;
string output = ((long)(x * 100)).ToString();
于 2012-06-28T16:58:55.923 に答える