From a351feaca7f948fd1700b22585e73c09ce0ed073 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 13 Apr 2023 22:58:54 +0200
Subject: [PATCH] Fixed #740 - fixed floating point handling

---
 .../budgetmaster/transactions/csvimport/AmountParser.java | 2 +-
 .../unit/transaction/csvimport/AmountParserTest.java      | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/AmountParser.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/AmountParser.java
index 97d066b00..20ced355a 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/AmountParser.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/AmountParser.java
@@ -49,7 +49,7 @@ public class AmountParser
 					throw new ParseException("String not fully parsed", parsePosition.getIndex());
 				}
 
-				return Optional.of((int) (parseDouble * 100));
+				return Optional.of((int) Math.round(parseDouble * 100));
 			}
 			catch(ParseException e)
 			{
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/transaction/csvimport/AmountParserTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/transaction/csvimport/AmountParserTest.java
index 3f64af30a..074e53291 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/transaction/csvimport/AmountParserTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/transaction/csvimport/AmountParserTest.java
@@ -268,4 +268,12 @@ class AmountParserTest
 				.isPresent()
 				.get().isEqualTo(-123456703);
 	}
+
+	@Test
+	void test_floatingPoint()
+	{
+		assertThat(AmountParser.parse("-9,7 €", ',', '.'))
+				.isPresent()
+				.get().isEqualTo(-970);
+	}
 }
-- 
GitLab