将MB和KB中给出的值转换为GB和TB的最快方法是什么?
sizes = ['999.992 MB', '2.488 GB', '401 KB']
Run Code Online (Sandbox Code Playgroud)
sizes_in_GB = ['?','?','?']
sizes_in_TB = ['?','?','?']
鉴于:
>>> sizes = ['999.992 MB', '2.488 GB', '401 KB']
Run Code Online (Sandbox Code Playgroud)
首先同意"精确"的含义.由于您的输入是浮点数,因此可以合理地假设"精度"仅限于输入精度.
要计算,首先要转换为基本字节(知道你的实际精度并不比输入精度好):
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float(lh)*defs[rh] for lh, rh in [e.split() for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
Run Code Online (Sandbox Code Playgroud)
然后转换为所需的大小:
>>> sd='GB'
>>> ['{:0.2} {}'.format(e/defs[sd], sd) for e in bytes]
['0.98 GB', '2.5 GB', '0.00038 GB']
>>> sd='MB'
>>> ['{:0.2} {}'.format(e/defs[sd], sd) for e in bytes]
['1e+03 MB', '2.5e+03 MB', '0.39 MB']
>>> sd='TB'
>>> ['{:0.2} {}'.format(e/defs[sd], sd) for e in bytes]
['0.00095 TB', '0.0024 TB', '3.7e-07 TB']
Run Code Online (Sandbox Code Playgroud)