【发布时间】:2017-07-20 14:40:02
【问题描述】:
我正在尝试将分钟转换为十进制小时数并四舍五入到最接近的十五分钟(四舍五入向上)。
基本上:
15 分钟 = 0.25 小时
25 分钟 = 0.5 小时
30 分钟 = 0.5 小时
50 分钟 = 1 小时
60 分钟 = 1 小时
我在 stackoverflow 上没有找到任何相关内容,但另一个网站告诉我:
var hours = Math.Round((minutes * 100 ) / 60.0);
这与结果不符。
我知道我不能使用Math.Round()(因为它会将其转换为int?)。 TimeSpan 也一样(因为它在 double 中给出了 .TotalHours)。
从除以 60 开始有什么好的方法?
【问题讨论】:
-
实际上 50 分钟是 0.75 小时,因为它比 60 更接近 45。
-
你尝试过 Math.Ceiling(minutes/15)/4 吗?
-
@stybl ,但在我的情况下,我用 15 向上取整。
-
@MarkBenovsky 评论似乎涵盖了你所有的例子
-
Math.Floor 和 Math.Ceiling 将返回整数。既然你想要双倍,我认为你最好的选择是除以 60.0 然后使用一些 if 语句
标签: c# algorithm rounding ceil