aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2025-02-24 00:07:20 -0500
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2025-02-24 00:07:20 -0500
commitbc33f40cb3989d6ac1a1d81d9f4cf0b89e831071 (patch)
tree3319fb8ca83ade776f3ba663695e1e0be65fdfb2 /src/main/java
parent54b1127efb5f7bfb84ac1d249968ffb035aec72a (diff)
downloadSkyblocker-bc33f40cb3989d6ac1a1d81d9f4cf0b89e831071.tar.gz
Skyblocker-bc33f40cb3989d6ac1a1d81d9f4cf0b89e831071.tar.bz2
Skyblocker-bc33f40cb3989d6ac1a1d81d9f4cf0b89e831071.zip
Fix #1188 sign calculator floating point errors
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java b/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java
index 265073bb..0b52fde5 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java
@@ -6,6 +6,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
+import org.jetbrains.annotations.VisibleForTesting;
import java.text.NumberFormat;
import java.util.Locale;
@@ -26,21 +27,26 @@ public class SignCalculator {
if (message.startsWith("=")) {
message = message.substring(1);
}
- //only update output if new input
- if (!message.equals(lastInput)) { //
- try {
- output = Calculator.calculate(message);
- } catch (Exception e) {
- output = -1;
- }
- }
+ calculate(message);
render(context, message, renderX, renderY);
lastInput = message;
}
- public static String getNewValue(Boolean isPrice) {
+ @VisibleForTesting
+ public static void calculate(String message) {
+ //only update output if new input
+ if (!message.equals(lastInput)) {
+ try {
+ output = Calculator.calculate(message);
+ } catch (Exception e) {
+ output = -1;
+ }
+ }
+ }
+
+ public static String getNewValue(boolean isPrice) {
if (output == -1) {
//if mode is not activated or just invalid equation return what the user typed in
return lastInput;
@@ -48,7 +54,7 @@ public class SignCalculator {
//price can except decimals and exponents
if (isPrice) {
- return String.valueOf(output);
+ return String.valueOf(Math.round(output * 100d) / 100d);
}
//amounts want an integer number so round
return Long.toString(Math.round(output));