fix: floating-point profile rating calculation #1227
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added a new parameter to
CalcN
. If active (I activated it for Ongeki and Chunithm, although all games with non-integer ratings are possibly affected), profile rating will be calculated using fixed-point arithmetic. This is basically zkrising/rg-stats#10 but for profile rating.This fixes edge cases like my current rating as well as these wacky rating graphs (since rating is now truncated as it should be):
If you restore
ongeki.ts:59
, i.e.naiveRating: ProfileAvgBestN("rating", 45)
, the new tests will fail with ratings16.269999999999996
1.4222222222222223
. Likewise,chunithm.ts:19
.An alternative fix would be to re-define rating and store it multiplied by 100 in the DB but that would require fixing old scores.