diff --git a/solar_ble.py b/solar_ble.py
index 3064867..097bab1 100755
--- a/solar_ble.py
+++ b/solar_ble.py
@@ -405,16 +405,18 @@ if __name__ == "__main__":
                             data = try_read_parse(dev, 0x0100, 11, parse_battery_state)
                             if data:
                                 data[DataName.CALCULATED_BATTERY_POWER] = float(
-                                    Decimal(data.get(DataName.BATTERY_VOLTAGE, 0))
-                                    * Decimal(data.get(DataName.BATTERY_CURRENT, 0))
+                                    Decimal(str(data.get(DataName.BATTERY_VOLTAGE, 0)))
+                                    * Decimal(
+                                        str(data.get(DataName.BATTERY_CURRENT, 0))
+                                    )
                                 )
                                 data[DataName.CALCULATED_PANEL_POWER] = float(
-                                    Decimal(data.get(DataName.PANEL_VOLTAGE, 0))
-                                    * Decimal(data.get(DataName.PANEL_CURRENT, 0))
+                                    Decimal(str(data.get(DataName.PANEL_VOLTAGE, 0)))
+                                    * Decimal(str(data.get(DataName.PANEL_CURRENT, 0)))
                                 )
                                 data[DataName.CALCULATED_LOAD_POWER] = float(
-                                    Decimal(data.get(DataName.LOAD_VOLTAGE, 0))
-                                    * Decimal(data.get(DataName.LOAD_CURRENT, 0))
+                                    Decimal(str(data.get(DataName.LOAD_VOLTAGE, 0)))
+                                    * Decimal(str(data.get(DataName.LOAD_CURRENT, 0)))
                                 )
                                 log(data)
                                 for consumer in consumers: