有没有好的方法将介于0和59之间的数字四舍五入到最近的15。
我正在使用C# 3.5。
所以...
- 1会变成0
- 29会变成15
- 30会变成30
等等等等。
非常感谢。
x = x - (x % 15)
可以作为一种不依赖于整数除法的解决方案。
作为Datetime的扩展方法
public static DateTime RoundDown(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month,
dateTime.Day, dateTime.Hour, (dateTime.Minute / 15) * 15, 0);
}
使用
DateTime date = dateTime.Now.RoundDown();//for example
//...
[TestMethod]
public void round_down()
{
Assert.AreEqual(-5.RoundDown(), 0);
Assert.AreEqual(0.RoundDown(), 0);
Assert.AreEqual(1.RoundDown(), 0);
Assert.AreEqual(20.RoundDown(), 15);
Assert.AreEqual(42.RoundDown(), 30);
Assert.AreEqual(48.RoundDown(), 45);
Assert.AreEqual(59.RoundDown(), 45);
Assert.AreEqual(90.RoundDown(), 45);
}
//...
public static class Ext
{
public static int RoundDown(this int val)
{
if (val < 0)
return 0;
if (val < 15)
return 0;
if (val < 30)
return 15;
if (val < 45)
return 30;
return 45;
}
}
int number = 43;
int newNumber = number / 15;
int rounded = newNumber * 15;
这就是取模运算符非常方便的地方
number - (number % 15)