nicenum.py (1763B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\brennivin\nicenum.py 2 import math as _math 3 4 def format(num, precision): 5 accpow = _math.floor(_math.log10(precision)) 6 if num < 0: 7 digits = int(_math.fabs(num / pow(10, accpow) - 0.5)) 8 else: 9 digits = int(_math.fabs(num / pow(10, accpow) + 0.5)) 10 result = '' 11 if digits > 0: 12 for i in range(0, int(accpow)): 13 if i % 3 == 0 and i > 0: 14 result = '0,' + result 15 else: 16 result = '0' + result 17 18 curpow = int(accpow) 19 while digits > 0: 20 adigit = chr(digits % 10 + ord('0')) 21 if curpow % 3 == 0 and curpow != 0 and len(result) > 0: 22 if curpow < 0: 23 result = adigit + ' ' + result 24 else: 25 result = adigit + ',' + result 26 elif curpow == 0 and len(result) > 0: 27 result = adigit + '.' + result 28 else: 29 result = adigit + result 30 digits //= 10 31 curpow += 1 32 33 for i in range(curpow, 0): 34 if i % 3 == 0 and i != 0: 35 result = '0 ' + result 36 else: 37 result = '0' + result 38 39 if curpow <= 0: 40 result = '0.' + result 41 if num < 0: 42 result = '-' + result 43 else: 44 result = '0' 45 return result 46 47 48 KB = 1024 49 50 def format_memory(val): 51 val = float(val) 52 if val < KB: 53 label = 'B' 54 elif KB <= val < KB ** 2: 55 label = 'KB' 56 val /= KB 57 elif KB ** 2 <= val < KB ** 3: 58 label = 'MB' 59 val /= KB ** 2 60 else: 61 label = 'GB' 62 val /= KB ** 3 63 return str(round(val, 2)) + label