Методы. Вернуть длину строкового представления целого числа
Я новичок в С#, подскажите, что значит вернуть длину строкового представления целого числа, не понимаю как реализовать данный метод.
/// <summary>
/// Returns the length of the integer's string presentation.
/// </summary>
/// <param name="number">Source integer.</param>
/// <returns>The length of the integer's string presentation.</returns>
public static byte GetLengthWithCascadedIfElse(int number)
{
//Add the method implementation. Restriction: the method can only use the cascaded
if else statement and comparison operations.
throw new NotImplementedException();
}
Ответы (1 шт):
Автор решения: Blackmeser
→ Ссылка
Посчитайте логарифм вашего числа и округлите его в меньшую сторону.
Лучше решения для больших чисел с упором на производительность я не знаю.
int x = 134534534;
int size = Math.Round(Math.Log10(x));
int size_f = Math.Round(Math.Log10(Math.Abs(x))) + (x < 0 ? 1 : 0);
//size_f - Если число ещё может быть отрицательным
Есть ещё 2 варианта:
- Деление в цикле на 10 - быстро, но не очень оптимально, когда число большое.
- Привести к строке и посчитать число символов - крайне медленно, но если делать 1 раз, а не для огромного массива чисел - то сойдёт.