3737 {
3738 uint digitsCount = (uint)number.DigitsCount;
3739 uint num = (uint)Math.Max(0, number.Scale);
3740 uint num2 = Math.Min(num, digitsCount);
3741 uint num3 = digitsCount - num2;
3742 uint num4 = (uint)Math.Abs(number.Scale - num2 - num3);
3743 byte* digitsPointer = number.GetDigitsPointer();
3744 if (digitsCount <= 7 && num4 <= 10)
3745 {
3748 num5 = ((num3 == 0) ? (num5 * num6) : (num5 / num6));
3749 return BitConverter.SingleToUInt32Bits(num5);
3750 }
3751 if (digitsCount <= 15 && num4 <= 22)
3752 {
3755 num7 = ((num3 == 0) ? (num7 * num8) : (num7 / num8));
3756 return BitConverter.SingleToUInt32Bits((float)num7);
3757 }
3759 }
static ulong NumberToFloatingPointBitsSlow(ref NumberBuffer number, in FloatingPointInfo info, uint positiveExponent, uint integerDigitsPresent, uint fractionalDigitsPresent)
static unsafe ulong DigitsToUInt64(byte *p, int count)
static readonly double[] s_Pow10DoubleTable
static unsafe uint DigitsToUInt32(byte *p, int count)
static readonly float[] s_Pow10SingleTable