2


1

デシマルカットの問題

小数点以下を切り捨てることは可能ですか? このような。

decimal number = 12.159m;

12.16ではなく、「number」から12.15を簡単に取得するにはどうすればよいですか?

簡単な方法はありますか、それとも文字列操作が唯一の方法ですか?

3 Answer


9


あなたはこれを試すことができます

decimal number = 12.159m;
number = Math.Truncate(number * 100m) / 100m;


4


できるよ

Math.Floor(number * 100) / 100

負の数を処理する方法(処理する場合)によっては、Floorの代わりにTruncateを使用することもできます。


-1


または、別の方法として、正規表現を使用して入力をキャプチャし、10進数に変換することもできます。たとえば、

Regex r = new Regex("(?\d+)\.(?\d{1,3})");
Decimal d= 12.159M;
Match m = r.Match(d.ToString());
if (m.Success){
string s = string.Format("{0}.{1}", m.Groups["postNo"].Text, m.Groups["preNo"].Text);
Decimal d = Decimal.Parse(s);
}

正規表現の「preNo」タグで、たとえばポイントの後に2桁だけの数字を保持する場合は、\ d \ {1,2}から変更します。 OK、私は人々が言うだろうと知っています、ねえ、それは遅くて、この答えに賛成です…​それは猫の皮を剥ぐ方法があることを示すのに役立ちます!

これが役立つことを願っています、よろしく、トム。

追伸:私は、編集が行方不明になったリテラルをエスケープしたことをダウンボットの後に気付いたので、これを編集しました!