From 79edace57ba003970b4c0c6be7e8a61449f7090a Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Thu, 16 Dec 2021 23:12:16 +0100 Subject: [PATCH] Use BigDecimals for score calculations --- app/models/submission.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/submission.rb b/app/models/submission.rb index 6027c50f..5acf4f34 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -291,7 +291,8 @@ class Submission < ApplicationRecord score += output[:score] * output[:weight] unless output.nil? end end - update(score: score) + # Prevent floating point precision issues by converting to BigDecimal, e.g., for `0.28 * 25` + update(score: score.to_d) if normalized_score.to_d == 1.0.to_d Thread.new do RequestForComment.where(exercise_id: exercise_id, user_id: user_id, user_type: user_type).find_each do |rfc|