summaryrefslogtreecommitdiff
path: root/RegionVisualiser/SizeFormatter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'RegionVisualiser/SizeFormatter.cs')
-rw-r--r--RegionVisualiser/SizeFormatter.cs25
1 files changed, 25 insertions, 0 deletions
diff --git a/RegionVisualiser/SizeFormatter.cs b/RegionVisualiser/SizeFormatter.cs
new file mode 100644
index 0000000..3479bd8
--- /dev/null
+++ b/RegionVisualiser/SizeFormatter.cs
@@ -0,0 +1,25 @@
+namespace RegionVisualiser;
+
+public static class SizeFormatter
+{
+ private static readonly string[] Units = ["bytes", "KB", "MB", "GB", "TB"];
+
+ public static string HumanReadable(long bytes)
+ {
+ if (bytes < 1024) return $"{bytes} {SizeFormatter.Units[0]}";
+
+ double value = bytes;
+ int unit = 0;
+
+ while (value >= 1024 && unit < SizeFormatter.Units.Length - 1)
+ {
+ value /= 1024;
+ unit++;
+ }
+
+ // Show up to 2 decimal places if not whole
+ return value % 1 == 0
+ ? $"{value:0} {SizeFormatter.Units[unit]}"
+ : $"{value:0.##} {SizeFormatter.Units[unit]}";
+ }
+} \ No newline at end of file