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

◆ operator double()

static System.Numerics.BigInteger.operator double ( BigInteger value)
inlineexplicitstatic

Definition at line 1547 of file BigInteger.cs.

1548 {
1549 int sign = value._sign;
1550 uint[] bits = value._bits;
1551 if (bits == null)
1552 {
1553 return sign;
1554 }
1555 int num = bits.Length;
1556 if (num > 32)
1557 {
1558 if (sign == 1)
1559 {
1560 return double.PositiveInfinity;
1561 }
1562 return double.NegativeInfinity;
1563 }
1564 ulong num2 = bits[num - 1];
1565 ulong num3 = ((num > 1) ? bits[num - 2] : 0u);
1566 ulong num4 = ((num > 2) ? bits[num - 3] : 0u);
1567 int num5 = NumericsHelpers.CbitHighZero((uint)num2);
1568 int exp = (num - 2) * 32 - num5;
1569 ulong man = (num2 << 32 + num5) | (num3 << num5) | (num4 >> 32 - num5);
1570 return NumericsHelpers.GetDoubleFromParts(sign, exp, man);
1571 }

References System.Numerics.NumericsHelpers.CbitHighZero(), System.Numerics.NumericsHelpers.GetDoubleFromParts(), and System.value.