API Reference

class prefixed.Float([x])

Subclass of the built-in float class

Key differences:

  • When a math operation is performed with another real number type (float, int), the result will be a prefixed.Float instance.

  • Additional presentation types 'h', 'H', 'k', 'K', 'm', and 'M' are supported for f-strings and format().

    Type Meaning
    'h' SI format. Outputs the number with closest divisible SI prefix. (k, M, G, …)
    'H' Same as 'h' with precision indicating significant digits.
    'k' IEC Format. Outputs the number with closest divisible IEC prefix. (Ki, Mi, Gi, …)
    'K' Same as 'k' with precision indicating significant digits.
    'm' Short IEC Format. Same as 'k' but only a single character. (K, M, G, …)
    'M' Same as 'm' with precision indicating significant digits.
       
    'j' Alias for 'k' - DEPRECATED
    'J' Alias for 'm' - DEPRECATED
  • When initializing from strings, SI and IEC prefixes are honored

    >>> Float('2k')
    Float(2000.0)
    
    >>> Float('2Ki')
    Float(2048.0)
    
  • An additional format flag ‘!’ is available which adds a space before the prefix

    >>> f'{Float(3250):!.2h}'
    '3.25 k'
    
  • When the 'H', 'K, or 'M' presentation types are used, precision is treated as the number of significant digits to include. Standard rounding will occur for the final digit.

    >>> f'{Float(1246):.3h}'
    '1.246k'
    
    >>> f'{Float(1246):.3H}'
    '1.25k'
    

    By default, trailing zeros are removed.

    >>> f'{Float(1000):.3H}'
    '1k'
    

    To preserve trailing zeros, include the '#' flag.

    >>> f'{Float(1000):#.3H}'
    '1.00k'
    
  • An additional field, margin, can be specified which lowers or raises the threshold for for each prefix by the given percentage. Margin is specified before precision with the syntax %[-]digit+.

    >>> f'{Float(950):.2h}'
    '950.00'
    
    >>> f'{Float(950):%-5.2h}'
    '0.95k'
    
    >>> f'{Float(1000):%5.2h}'
    '1000.00'
    
    >>> f'{Float(1050):%5.2h}'
    '1.05k'