十进制切割问题

时间:2009-11-24 11:21:18

标签: c# .net decimal

是否可以剪切小数,而不是将其舍入。像这样。

decimal number = 12.159m;

如何从number而不是12.16轻松获得12.15?

是否有一种简单的方法或字符串操作是唯一的方法?

3 个答案:

答案 0 :(得分:9)

你可以试试这个

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

答案 1 :(得分:4)

你可以做到

Math.Floor(number * 100) / 100

根据你想要处理的方式(如果你想处理)负数,你也可以使用Truncate而不是Floor。

答案 2 :(得分:-1)

或者另一种方法是使用正则表达式来捕获输入并将其转换回十进制,例如

Regex r = new Regex("(?<postNo>\d+)\.(?<preNo>\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'标签中,将其从\ d {1,2}更改,例如,如果要在点之后仅保留两位数字。好吧,我知道人们会说,嘿,这个问题很缓慢而且还没有给出这个答案......这有助于表明有一些方法可以让猫皮肤出现!

希望这有帮助, 最好的祝福, 汤姆。

P.S:编辑了这个,因为我在向下看之后意识到编辑已经逃过了丢失的文字!