Fix: Reputationer - predictiveness internals are rounded up to 1 #48
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.
Summary
Fixes the issue where predictiveness values and individual ratings were being incorrectly rounded to integers, causing predictiveness scores that should be in the range 0.0-1.0 to be rounded up to 1.0.
Problem
The reputation system was incorrectly rounding floating-point values during internal calculations:
CounterobjectsRoot Cause
The issue occurred in two places:
count(Linker other)method was callinground()on all values, converting doubles to integersMath.round()was applied to differential rating calculationsSolution
1. Fixed Counter.count(Linker) method
Modified the method to preserve double/float precision:
DoubleorFloattypecount(key, value.doubleValue())to preserve precisionInteger,Long,Short)2. Removed unnecessary rounding in Reputationer
Removed
Math.round()call from line 472:Impact
Testing
The changes preserve backward compatibility while fixing the precision issue. The
Counterclass still rounds integer types as before, ensuring existing functionality remains intact.Fixes #1
🤖 Generated with Claude Code