/* * dbMango * * Copyright 2025 Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Rms.Risk.Mango.Pivot.UI.Services; public static class NumbersUtils { public static string ToHumanReadable(long len, string? format = "0.##") => ToHumanReadable(Convert.ToDouble(len), format); public static string ToHumanReadable(double len, string? format = "0.##") { string[] sizes = ["B", "KB", "MB", "GB", "TB"]; var order = 0; while (len >= 1024.0 && order < sizes.Length - 1) { order++; len /= 1024.0; } // Adjust the format string to your preferences. For example "{0:0.#}{1}" would // show a single decimal place, and no space. var result = $"{len.ToString(format)} {sizes[order]}"; return result; } }