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

◆ Round() [3/4]

static unsafe float System.MathF.Round ( float x,
int digits,
MidpointRounding mode )
inlinestatic

Definition at line 362 of file MathF.cs.

363 {
364 if (digits < 0 || digits > 6)
365 {
366 throw new ArgumentOutOfRangeException("digits", SR.ArgumentOutOfRange_RoundingDigits_MathF);
367 }
368 if (mode < MidpointRounding.ToEven || mode > MidpointRounding.ToPositiveInfinity)
369 {
370 throw new ArgumentException(SR.Format(SR.Argument_InvalidEnumValue, mode, "MidpointRounding"), "mode");
371 }
372 if (Abs(x) < 100000000f)
373 {
374 float num = roundPower10Single[digits];
375 x *= num;
376 switch (mode)
377 {
378 case MidpointRounding.ToEven:
379 x = Round(x);
380 break;
381 case MidpointRounding.AwayFromZero:
382 {
383 float x2 = ModF(x, &x);
384 if (Abs(x2) >= 0.5f)
385 {
386 x += (float)Sign(x2);
387 }
388 break;
389 }
390 case MidpointRounding.ToZero:
391 x = Truncate(x);
392 break;
393 case MidpointRounding.ToNegativeInfinity:
394 x = Floor(x);
395 break;
396 case MidpointRounding.ToPositiveInfinity:
397 x = Ceiling(x);
398 break;
399 default:
400 throw new ArgumentException(SR.Format(SR.Argument_InvalidEnumValue, mode, "MidpointRounding"), "mode");
401 }
402 x /= num;
403 }
404 return x;
405 }
static float Abs(float x)
Definition MathF.cs:130
static unsafe float Truncate(float x)
Definition MathF.cs:413
static int Sign(float x)
Definition MathF.cs:408
static unsafe float ModF(float x, float *intptr)
static float Ceiling(float x)
static float Floor(float x)
static readonly float[] roundPower10Single
Definition MathF.cs:17
static float Round(float x)
Definition MathF.cs:326

References System.MathF.Abs(), System.SR.Argument_InvalidEnumValue, System.SR.ArgumentOutOfRange_RoundingDigits_MathF, System.MathF.Ceiling(), System.MathF.Floor(), System.SR.Format(), System.MathF.ModF(), System.MathF.Round(), System.MathF.roundPower10Single, System.MathF.Sign(), and System.MathF.Truncate().