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

◆ NumberToDoubleFloatingPointBits()

static unsafe ulong System.Number.NumberToDoubleFloatingPointBits ( ref NumberBuffer number,
in FloatingPointInfo info )
inlinestaticprivate

Definition at line 3693 of file Number.cs.

3694 {
3695 uint digitsCount = (uint)number.DigitsCount;
3696 uint num = (uint)Math.Max(0, number.Scale);
3697 uint num2 = Math.Min(num, digitsCount);
3698 uint num3 = digitsCount - num2;
3699 uint num4 = (uint)Math.Abs(number.Scale - num2 - num3);
3700 byte* digitsPointer = number.GetDigitsPointer();
3701 if (digitsCount <= 15 && num4 <= 22)
3702 {
3703 double num5 = DigitsToUInt64(digitsPointer, (int)digitsCount);
3704 double num6 = s_Pow10DoubleTable[num4];
3705 num5 = ((num3 == 0) ? (num5 * num6) : (num5 / num6));
3706 return BitConverter.DoubleToUInt64Bits(num5);
3707 }
3708 return NumberToFloatingPointBitsSlow(ref number, in info, num, num2, num3);
3709 }
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

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

Referenced by System.Number.NumberToDouble().