Score: Why not floats?
Marc Adler
adler at stud.uni-frankfurt.de
Sat Jan 6 14:21:41 UTC 2007
Hi,
correct me if i'm wrong but it seems like there is a little glitch in
the scoresystem. If i'm reading this right the score is saved as an
integer between 0 and 100. Is there a reason why this is done? The
problem is that the current system gets stuck at some point because of
the rounding down (i think when a song is played more than "100 -
current score" times) and the scores can not change anymore (at least
can no longer go up). A little (possible the most extreme) example:
Lets say there is a song which was skipped 100 times. It has the current
score 1. Now it is played completly (should add a rating of 100). So we
end up with:
newscore = ( ( prevscore * playcount ) + percentage ) / ( playcount + 1 )
newscore = ((1 * 100) + 100 / 101) = 1.9801
1.9801 is saved as 1 in the database and we're back at the beginning. If the track already has a higher rating this situation happens even earlier. A track with an rating of 50 will not be able to reach a higher score after as much as 50 plays.
So the questions are:
Can i change the script for myself and save floating point numbers without the risk of "confusing" other program parts?
Would you consider changing it in one of the next releases, because i think a scoresystem which gets stuck is probably not the best solution.
Marc
More information about the Amarok
mailing list