diff --git a/solar_ble.py b/solar_ble.py
index 1baafe0..138225a 100755
--- a/solar_ble.py
+++ b/solar_ble.py
@@ -159,6 +159,36 @@ CMD_ = b"\xff\x78\x00\x00\x00\x01"
 # ?: load_enabled
 
 
+# Only factor of 1000
+SI_PREFIXES_LARGE = "kMGTPEZY"
+SI_PREFIXES_SMALL = "mµnpfazy"
+
+
+def humanize_number(data, unit: str = ""):
+    counter = 0
+
+    while data >= 1000:
+        data /= 1000
+        counter += 1
+        if counter >= len(SI_PREFIXES_LARGE):
+            break
+
+    while data < 1:
+        data *= 1000
+        counter -= 1
+        if abs(counter) >= len(SI_PREFIXES_SMALL):
+            break
+
+    if not counter:
+        prefix = ""
+    elif counter > 0:
+        prefix = SI_PREFIXES_LARGE[counter - 1]
+    elif counter < 0:
+        prefix = SI_PREFIXES_SMALL[abs(counter) - 1]
+
+    return f"{data:.3g} {prefix}{unit}"
+
+
 class DataItem:
     name: str
     st_format: str
@@ -187,7 +217,6 @@ class DataItem:
     def transform(self, data):
         if self.transformation is None:
             return data
-
         return self.transformation(data)