Я пытаюсь создать функцию, которая будет возвращать следующий наивысший (из-за отсутствия лучшего термина) «круглый» номер, основанный на наибольшем разряде места (крайнем левом разряде).
Например:
17 > 20
328 > 400
18564 > 20000
//Already round numbers will stay the same:
500 > 500
Я знаю, что могу просто сделать что-то вроде этого:
int customRound(int i)
{
string s = i.ToString();
if (int.Parse(s.Substring(1)) > 0)
{
string greatestDigit = s.Substring(0, 1);
string digit = (int.Parse(greatestDigit) + 1).ToString();
return int.Parse(digit + string.Empty.PadRight(s.Length - 1, '0'));
}
return i;
}
Но это просто кажется хакерским, и я уверен, что есть более элегантныйи математический способ сделать это.