2009-11-24 53 views
2

是否可以剪切十进制而不是四舍五入。喜欢这个。十进制剪切问题

decimal number = 12.159m; 

我怎样才能从number而不是12.16容易得到12.15?

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

回答

9

你可以试试这个

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

谢谢你的工作! – Tuoski 2009-11-24 11:30:59

4

你可以做

Math.Floor(number * 100)/100 

根据您想如何处理(如果你想处理),你也可以使用,而不是楼截断负数。

+3

楼层不会有负数的理想结果。 – Joey 2009-11-24 11:26:27

+0

我知道,我更新了该信息的答案以及 – HakonB 2009-11-24 11:31:01

-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}改变它。好吧,我知道人们会说,嘿,这是缓慢的,downvote这个答案...它表明有办法皮肤猫!

希望这会有所帮助, 最好的问候, 汤姆。

P.S:编辑完成后,我意识到编辑已经逃过了缺失的文字!