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

◆ Round() [5/8]

static double System.Math.Round ( double a)
inlinestatic

Definition at line 1120 of file Math.cs.

1121 {
1122 ulong num = BitConverter.DoubleToUInt64Bits(a);
1123 int num2 = double.ExtractExponentFromBits(num);
1124 if (num2 <= 1022)
1125 {
1126 if (num << 1 == 0L)
1127 {
1128 return a;
1129 }
1130 double x = ((num2 == 1022 && double.ExtractSignificandFromBits(num) != 0L) ? 1.0 : 0.0);
1131 return CopySign(x, a);
1132 }
1133 if (num2 >= 1075)
1134 {
1135 return a;
1136 }
1137 ulong num3 = (ulong)(1L << 1075 - num2);
1138 ulong num4 = num3 - 1;
1139 num += num3 >> 1;
1140 num = (((num & num4) != 0L) ? (num & ~num4) : (num & ~num3));
1141 return BitConverter.UInt64BitsToDouble(num);
1142 }
static double CopySign(double x, double y)
Definition Math.cs:312

References System.Math.CopySign(), System.BitConverter.DoubleToUInt64Bits(), System.L, and System.BitConverter.UInt64BitsToDouble().