Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ NumberToSingleFloatingPointBits()

static unsafe uint System.Number.NumberToSingleFloatingPointBits ( ref NumberBuffer number,
in FloatingPointInfo info )
inlinestaticprivate

Definition at line 3736 of file Number.cs.

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 {
3746 float num5 = DigitsToUInt32(digitsPointer, (int)digitsCount);
3747 float num6 = s_Pow10SingleTable[num4];
3748 num5 = ((num3 == 0) ? (num5 * num6) : (num5 / num6));
3749 return BitConverter.SingleToUInt32Bits(num5);
3750 }
3751 if (digitsCount <= 15 && num4 <= 22)
3752 {
3753 double num7 = DigitsToUInt64(digitsPointer, (int)digitsCount);
3754 double num8 = s_Pow10DoubleTable[num4];
3755 num7 = ((num3 == 0) ? (num7 * num8) : (num7 / num8));
3756 return BitConverter.SingleToUInt32Bits((float)num7);
3757 }
3758 return (uint)NumberToFloatingPointBitsSlow(ref number, in info, num, num2, num3);
3759 }
static ulong NumberToFloatingPointBitsSlow(ref NumberBuffer number, in FloatingPointInfo info, uint positiveExponent, uint integerDigitsPresent, uint fractionalDigitsPresent)
Definition Number.cs:3761
static unsafe ulong DigitsToUInt64(byte *p, int count)
Definition Number.cs:3682
static readonly double[] s_Pow10DoubleTable
Definition Number.cs:1259
static unsafe uint DigitsToUInt32(byte *p, int count)
Definition Number.cs:3671
static readonly float[] s_Pow10SingleTable
Definition Number.cs:1253

References System.Math.Abs(), System.Number.DigitsToUInt32(), System.Number.DigitsToUInt64(), System.info, System.Math.Max(), System.Math.Min(), System.Number.NumberToFloatingPointBitsSlow(), System.Number.s_Pow10DoubleTable, System.Number.s_Pow10SingleTable, and System.BitConverter.SingleToUInt32Bits().

Referenced by System.Number.NumberToSingle().