diff --git a/cw_evm/lib/evm_chain_formatter.dart b/cw_evm/lib/evm_chain_formatter.dart
index cb9b7346c..797728885 100644
--- a/cw_evm/lib/evm_chain_formatter.dart
+++ b/cw_evm/lib/evm_chain_formatter.dart
@@ -1,15 +1,13 @@
-import 'package:intl/intl.dart';
-
-const evmChainAmountLength = 12;
-const evmChainAmountDivider = 1000000000000;
-final evmChainAmountFormat = NumberFormat()
-  ..maximumFractionDigits = evmChainAmountLength
-  ..minimumFractionDigits = 1;
+import 'dart:math';
 
 class EVMChainFormatter {
+  static int _divider = 0;
+
   static int parseEVMChainAmount(String amount) {
     try {
-      return (double.parse(amount) * evmChainAmountDivider).round();
+      final decimalLength = _getDividerForInput(amount);
+      _divider = decimalLength;
+      return (double.parse(amount) * pow(10, decimalLength)).round();
     } catch (_) {
       return 0;
     }
@@ -17,9 +15,19 @@ class EVMChainFormatter {
 
   static double parseEVMChainAmountToDouble(int amount) {
     try {
-      return amount / evmChainAmountDivider;
+      return amount / pow(10, _divider);
     } catch (_) {
       return 0;
     }
   }
+
+  static int _getDividerForInput(String amount) {
+    final result = amount.split('.');
+    if (result.length > 1) {
+      final decimalLength = result[1].length;
+      return decimalLength;
+    } else {
+      return 0;
+    }
+  }
 }