Answers for "python si notation"

1

python si notation

import math
SI_PREFIXES_CENTER_INDEX = 8
si_prefixes = ('y', 'z', 'a', 'f', 'p', 'n', 'μ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')


def to_si_notation(value: float, precision: int = 1):
    """Transforms a float number to a string (in SI Notation) using SI prefixes. ``e.g. 123456 => '123.46k'``
    Args:
        value (float): The value to be converted
        precision (int, optional): The number of decimal places to display. Defaults to 1.
    Returns:
        str: String representing 'value' in SI Notation
    """

    value = float(value)
    if (value == 0): return str(value)

    exponent = math.floor(math.log10(abs(value)))
    exponent_of_1000 = (math.ceil if exponent < 0 else math.floor)(exponent / 3)
    if (exponent_of_1000 == 0): return "{0:.{1}f}".format(value, precision)
    
    mantissa = "{0:.{1}f}".format(float((value / math.pow(10, exponent_of_1000 * 3))), precision)
    si_prefix = si_prefixes[exponent_of_1000 + SI_PREFIXES_CENTER_INDEX]
    return f"{mantissa}{si_prefix}"
Posted by: Guest on October-26-2021

Python Answers by Framework

Browse Popular Code Answers by Language