Improved output distribution of RoundToLevels (#25026)
* Improved output distribution of RoundToLevels * Updated tests * Oops
This commit is contained in:
@@ -35,27 +35,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var toOne = actual / max;
|
var toOne = actual / max;
|
||||||
double threshold;
|
return (int) Math.Ceiling(toOne * (levels - 2));
|
||||||
if (levels % 2 == 0)
|
|
||||||
{
|
|
||||||
// Basically, if we have an even count of levels, there's no exact "mid point".
|
|
||||||
// Thus, I nominate the first one below the 50% mark.
|
|
||||||
threshold = ((levels / 2f) - 1) / (levels - 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
threshold = 0.5f;
|
|
||||||
}
|
|
||||||
|
|
||||||
var preround = toOne * (levels - 1);
|
|
||||||
if (toOne < threshold || levels <= 2)
|
|
||||||
{
|
|
||||||
return (int) Math.Ceiling(preround);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return (int) Math.Floor(preround);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -18,15 +18,15 @@ namespace Content.Tests.Shared.Utility
|
|||||||
(0.01f, 10, 5, 1),
|
(0.01f, 10, 5, 1),
|
||||||
(1, 10, 5, 1),
|
(1, 10, 5, 1),
|
||||||
(2, 10, 5, 1),
|
(2, 10, 5, 1),
|
||||||
(2.5f, 10, 5, 1),
|
(3, 10, 5, 1),
|
||||||
(2.51f, 10, 5, 2),
|
(3.33f, 10, 5, 1),
|
||||||
(3, 10, 5, 2),
|
(3.34f, 10, 5, 2),
|
||||||
(4, 10, 5, 2),
|
(4, 10, 5, 2),
|
||||||
(5, 10, 5, 2),
|
(5, 10, 5, 2),
|
||||||
(6, 10, 5, 2),
|
(6, 10, 5, 2),
|
||||||
(7, 10, 5, 2),
|
(6.66f, 10, 5, 2),
|
||||||
(7.49f, 10, 5, 2),
|
(6.67f, 10, 5, 3),
|
||||||
(7.5f, 10, 5, 3),
|
(7, 10, 5, 3),
|
||||||
(8, 10, 5, 3),
|
(8, 10, 5, 3),
|
||||||
(9, 10, 5, 3),
|
(9, 10, 5, 3),
|
||||||
(10, 10, 5, 4),
|
(10, 10, 5, 4),
|
||||||
|
|||||||
Reference in New Issue
Block a user