Improved output distribution of RoundToLevels (#25026)

* Improved output distribution of RoundToLevels

* Updated tests

* Oops

(cherry picked from commit 9cee54e5a1b4efd1b8d511584b3e4dcbd7e7c529)
This commit is contained in:
Tayrtahn 2024-02-07 18:37:24 -05:00 committed by Debug
parent aac95649d1
commit de74e0faed
No known key found for this signature in database
GPG Key ID: 271270A74EF9C350
2 changed files with 7 additions and 27 deletions

View File

@ -35,27 +35,7 @@
}
var toOne = actual / max;
double threshold;
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);
}
return (int) Math.Ceiling(toOne * (levels - 2));
}
/// <summary>

View File

@ -18,15 +18,15 @@ namespace Content.Tests.Shared.Utility
(0.01f, 10, 5, 1),
(1, 10, 5, 1),
(2, 10, 5, 1),
(2.5f, 10, 5, 1),
(2.51f, 10, 5, 2),
(3, 10, 5, 2),
(3, 10, 5, 1),
(3.33f, 10, 5, 1),
(3.34f, 10, 5, 2),
(4, 10, 5, 2),
(5, 10, 5, 2),
(6, 10, 5, 2),
(7, 10, 5, 2),
(7.49f, 10, 5, 2),
(7.5f, 10, 5, 3),
(6.66f, 10, 5, 2),
(6.67f, 10, 5, 3),
(7, 10, 5, 3),
(8, 10, 5, 3),
(9, 10, 5, 3),
(10, 10, 5, 4),