I was asked by my senior colleague to make a method which takes two arguments as input, first the number and second the number of digits to be returned from the first argument number, but the restriction was not to convert it to string.
- private static int takeNDigits(int number, int N)
- {
-
- int numberOfDigits = (int)Math.Floor(Math.Log10(number) + 1);
-
-
- if (numberOfDigits >= N)
- return (int)Math.Truncate((number / Math.Pow(10, numberOfDigits - N)));
- else
- return number;
-
- }
I tested with some inputs which are :
- int Result1 = takeNDigits(666, 4);
- int Result2 = takeNDigits(987654321, 5);
- int Result3 = takeNDigits(123456789, 7);
- int Result4 = takeNDigits(35445, 1);
- int Result5 = takeNDigits(666555, 6);
the output was:
Result1 : 666
Result2 : 98765
Result3 : 1234567
Result4 : 3
Result5 : 666555