From 9e8551d83214996d0ca97b24e20bc14c8c0b1ba8 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 27 Oct 2021 16:58:19 -0400 Subject: [PATCH] skillcalc: use double precision for xp Doing the xp calculation with floats and then converting it to double is less precise, and causes minor errors that accumulate with very large xp ranges --- .../client/plugins/skillcalculator/SkillCalculator.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java index a47eadade8..672996ebeb 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java @@ -343,9 +343,8 @@ class SkillCalculator extends JPanel int actionCount = 0; int neededXP = targetXP - currentXP; SkillAction action = slot.getAction(); - float xp = action.isIgnoreBonus() - ? action.getXp() - : Math.round(action.getXp() * xpFactor * 10f) / 10f; + final float bonus = action.isIgnoreBonus() ? 1f : xpFactor; + final double xp = Math.round(action.getXp() * bonus * 10f) / 10d; if (neededXP > 0) {