如果在c#中该值等于0.7,如何舍入?

时间:2014-04-30 14:55:52

标签: c# .net decimal rounding

如果值大于0.7,我想舍入小数

示例:

decimal rate = 3.7
decimal roundoff = 4 

decimal rate2 = 3.6
decimal roundoff2 = 3.6 //remain value coz its below 0.7

我怎么能在c#中做到这一点?

2 个答案:

答案 0 :(得分:15)

您可以使用模数来计算余数:

decimal d = rate % 1 >= .7m ? Math.Ceiling(rate) : rate;

您可以将此用作负值:

return rate >= 0
       ? (rate % 1 >= .7m ? Math.Ceiling(rate) : rate) 
       : (Math.Abs(rate % 1) >= .3m ? Math.Floor(rate) : rate);

答案 1 :(得分:3)

纯粹是因为我无法抗拒尝试数学等价物:

rate + (int)((rate % 1) / 0.7m) * (1 - Math.Abs(rate % 1));

如果完全没有通话,就无法摆脱Math.Abs​​。如果只使用正数,则可以省略math.abs。