十进制的分钟到小时 + 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.Ceiling
returns你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
转换成小时。
我正在尝试将分钟转换为小数小时,并四舍五入到最接近的十五分钟(四舍五入 向上 )。
基本上:
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.Ceiling
returns你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
转换成小时。