Improved output distribution of RoundToLevels (#25026)

* Improved output distribution of RoundToLevels

* Updated tests

* Oops
This commit is contained in:
Tayrtahn
2024-02-07 18:37:24 -05:00
committed by GitHub
parent 8ccdbe7350
commit 9cee54e5a1
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),