/* 
 *                                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;
    }
}