"""
@author: zhangjun.xue
@time: 2020/5/25 17:46
@file: str_of_num.py
@desc: python实现 数值 转换为 万,亿单位,保留3位小数
"""
import traceback
from loguru import logger
def str_of_num(num):
'''
递归实现,精确为最大单位值 + 小数点后三位
'''
def strofsize(num, level):
if level >= 2:
return num, level
elif num >= 10000:
num /= 10000
level += 1
return strofsize(num, level)
else:
return num, level
units = ['', '万', '亿']
num, level = strofsize(num, 0)
if level > len(units):
level -= 1
return '{}{}'.format(round(num, 3), units[level])
def seconds_to_hms(seconds_num):
"""
输入秒数 转换为 时分秒输出
param: seconds_num integer 666
return: hms str 00:00:00
"""
try:
m, s = divmod(seconds_num, 60)
h, m = divmod(m, 60)
hms = "%02d:%02d:%02d" % (h, m, s)
return hms
except:
logger.info(traceback.format_exc())
return seconds_num
if __name__ == "__main__":
num_list = [
0, 1, 2, 10, 11, 100, 123,
1000, 1234, 10000, 11923,
5463443, 54634434, 97736213623,
977362136234, 9773621362345, 97736213623456
]
for num in num_list:
str_num = str_of_num(num)
logger.info(f"num = {num} | str_num = {str_num}")
logger.info('-'*50, '\n')
seconds_num_list = [
10, 59, 60, 61, 71, 120, 121,
3600, 3666, 3667, 7200, 7201, 7361,
86400, 86460, 86461, 86466,
666,
0
]
for seconds_num in seconds_num_list:
hms = seconds_to_hms(seconds_num)
logger.info(f"seconds_num = {seconds_num} | hms = {hms}")