Floating point addition error

Of course, this will happen with floating point numbers. Floats are only guaranteed accuracy up to 7 significant decimals. And, since you are in the 50,000,000 and 10,000,000 respectively, you have already taken up more than 7 significant decimal digits. Thus, accuracy is lost when adding, multiplying and etc.

See this stackoverflow for more details on this subject.

You might consider switching to integer for storing the absolute score value as int64 (long) can store up to 9,223,372,036,854,775,807 on 64bit machines. Then apply your multiplier to a slightly lower number and add that to the absolute integer value. A 32 bit int can store up to 2,147,483,647.