NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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