3901 {
3902 int num = number.Scale;
3903 if (num > 19 || num < number.DigitsCount)
3904 {
3905 return false;
3906 }
3907 byte* digitsPointer = number.GetDigitsPointer();
3909 while (--num >= 0)
3910 {
3911 if ((ulong)num2 > 922337203685477580uL)
3912 {
3913 return false;
3914 }
3915 num2 *= 10;
3916 if (*digitsPointer != 0)
3917 {
3918 num2 += *(digitsPointer++) - 48;
3919 }
3920 }
3921 if (number.IsNegative)
3922 {
3923 num2 = -num2;
3924 if (num2 > 0)
3925 {
3926 return false;
3927 }
3928 }
3929 else if (num2 < 0)
3930 {
3931 return false;
3932 }
3934 return true;
3935 }