Math.Round()十进制c#

时间:2012-05-22 08:45:16

标签: c# .net

我有TimeSpants

当我使用Math.Round(ts.TotalHours,2)时,它正在返回3,3,这是正确的。

我想将小数格式化为3,33 -> 3,5

像这样:

3 hours = 3,0
3 hours and 10 minutes = 3,25
3 hours and 20 minutes = 3,5
3 hours and 35 minutes = 3,75
3 hours and 55 minutes = 4

有人有个好主意吗?

1 个答案:

答案 0 :(得分:6)

如果要舍入最接近的0.25,可以简单地乘以4,舍入,然后除以4.

public static decimal RoundToQuarter(decimal x)
{
  return Math.Round(x*4)/4;
}

您还应该考虑您想要的MidPointRounding行为。即1/83/8等值会发生什么。默认值为round-to-even,1/8变为03/8变为0.5