十进制的分钟到小时 + C# 中的舍入

Minutes to hours in decimal + round in C#

我正在尝试将分钟转换为小数小时,并四舍五入到最接近的十五分钟(四舍五入 向上 )。

基本上:

15 分钟 = 0.25 小时

25分钟=0.5小时

30分钟=0.5小时

50分钟=1小时

60分钟=1小时

我在 Whosebug 上没有找到任何相关内容,但另一个网站告诉我:

var hours =  Math.Round((minutes * 100 ) / 60.0);

与结果相去甚远。

我知道我不能使用 Math.Round()(因为它会将其转换为 int?)。 TimeSpan 相同(因为它在 double 中给出 .TotalHours)。

从除以 60 开始有什么好的方法?

让我们假设您有分钟并想将它们转换为小时 (0.25, 0.5, 0.75, 1)

首先我们得到它是哪个季度:Math.Ceiling(minutes / 15.0)

Math.Ceilingreturns你4如果有3.01

然后除以 4 得到四分之一

var hours = Math.Ceiling(minutes / 15.0)/4.0;

使用

之一
  • Math.Round(minutes / 15) * 0.25
  • Math.Floor(minutes / 15) * 0.25
  • Math.Ceiling(minutes / 15) * 0.25

取决于您想要的精确舍入(最近的、向下的或向上的)。

minutes / 15 告诉你几个季度,你四舍五入,然后 0.25 转换成小时。