From 4f001f6ee540347928a9a3abd41c4e523a2ffd79 Mon Sep 17 00:00:00 2001 From: Marmo Date: Thu, 6 Jan 2022 12:43:52 +0100 Subject: [PATCH 1/2] fix wrong amounts being saved, when decimals != 2, closes #79 --- .../debitum/ui/edit_transaction/EditTransactionFragment.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java b/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java index ef2f5f6b..b1d39b8c 100644 --- a/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java +++ b/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java @@ -406,7 +406,10 @@ public void onSaveTransactionAction() { // parse amount // user is expected to enter something like "10.05"(€/$/...) and we want to store 1005 (format is enforced by AmountTextWatcher) - if (isMonetary) factor *= 100; + // OR "10" 10 + // OR "10.1" 101 + // OR "10.050" 10050 + if (isMonetary) factor *= Math.pow(10, Utilities.getNrOfDecimals(requireContext())); int amount; try { amount = Utilities.nextInt(factor * Utilities.parseAmount(editAmount.getText().toString())); From 83b5f5747a4eb19287cf8047af59723afb70ba99 Mon Sep 17 00:00:00 2001 From: Marmo Date: Thu, 6 Jan 2022 12:58:23 +0100 Subject: [PATCH 2/2] remove implicit cast to narrower type --- .../debitum/ui/edit_transaction/EditTransactionFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java b/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java index b1d39b8c..8597143b 100644 --- a/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java +++ b/app/src/main/java/org/ebur/debitum/ui/edit_transaction/EditTransactionFragment.java @@ -409,7 +409,7 @@ public void onSaveTransactionAction() { // OR "10" 10 // OR "10.1" 101 // OR "10.050" 10050 - if (isMonetary) factor *= Math.pow(10, Utilities.getNrOfDecimals(requireContext())); + if (isMonetary) factor *= Double.valueOf(Math.pow(10, Utilities.getNrOfDecimals(requireContext()))).intValue(); int amount; try { amount = Utilities.nextInt(factor * Utilities.parseAmount(editAmount.getText().toString()));