Нет никакой встроенной функции в библиотеке классов, которая сделает это. Самое близкое Система. Математика. Вокруг () , который является только для округления чисел Десятичного числа типов и Вдвое больше по сравнению с самым близким целочисленным значением. Однако можно обернуть оператор в дополнительном методе, если Вы работаете с.NET 3.5, который позволит Вам использовать функцию намного более чисто.
public static class ExtensionMethods
{
public static int RoundOff (this int i)
{
return ((int)Math.Round(i / 10.0)) * 10;
}
}
int roundedNumber = 236.RoundOff(); // returns 240
int roundedNumber2 = 11.RoundOff(); // returns 10
, Если Вы программируете против более старой версии платформы.NET, просто удалите "это" из функции RoundOff и вызовите функцию как так:
int roundedNumber = ExtensionMethods.RoundOff(236); // returns 240
int roundedNumber2 = ExtensionMethods.RoundOff(11); // returns 10
Используйте Математику. Потолок, чтобы всегда окружить.
int number = 236;
number = (int)(Math.Ceiling(number / 10.0d) * 10);
Модуль (%) получает остаток, таким образом, Вы добираетесь:
// number = 236 + 10 - 6
Помещенный, что в дополнительный метод
public static int roundupbyten(this int i){
// return i + (10 - i % 10); <-- logic error. Oops!
return (int)(Math.Ceiling(i / 10.0d)*10); // fixed
}
// call like so:
int number = 236.roundupbyten();
выше отредактированного: Я должен был пойти со своим первым инстинктом для использования Математики. Потолок
я занесенный в блог об этом при вычислении контрольных разрядов UPC .
Округление плавания к целому числу подобно (интервалу) (x+0.5), в противоположность простому кастингу x - если Вы хотите несколько из 10, можно легко адаптировать это.
, Если Вы просто хотите сделать целочисленную математику и округляете ее к десять, попробуйте (x+10/2)/10*10.
Редактирование: я заметил, что этот ответ не удовлетворяет запросу автора оригинала и является также смещенной формой округления этого, я предпочитаю не делать. Однако другой принятый ответ уже указал Math.round (), намного лучшее решение.
Это может быть слишком поздно, но я думаю, что когда-нибудь это может быть хорошей помощью ...
Я пробовал это:
public int RoundOff(int number, int interval){
int remainder = number % interval;
number += (remainder < interval / 2) ? -remainder : (interval - remainder);
return number;
}
Для использования:
int number = 11;
int roundednumber = RoundOff(number, 10);
Таким образом, у вас есть выбор, будет ли половина интервала округляться в большую или меньшую сторону. =)