Suffixation of decimal numbers: Difference between revisions

m
no edit summary
No edit summary
mNo edit summary
Line 1,059:
 
def suffize(num, digits=None, base=10):
prefixessuffixes = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'X', 'W', 'V', 'U', 'googol']
 
exponent_distance = 10 if base == 2 else 3
Line 1,068:
 
if base == 10 and num >= 1e100:
prefix_indexsuffix_index = 13
num /= 1e100
else:
if num > 1:
magnitude = math.floor(math.log(num, base))
prefix_indexsuffix_index = min(math.floor(magnitude / exponent_distance), 12)
else:
prefix_indexsuffix_index = 0
 
num /= base ** (exponent_distance * prefix_indexsuffix_index)
 
if digits is not None:
Line 1,084:
num_str = '{:.3f}'.format(num).strip('0').strip('.')
 
return (num_sign if num_sign else '') + num_str + prefixessuffixes[prefix_indexsuffix_index] + ('i' if base == 2 else '')