代码:
"""
@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}")
输出:
2021-05-19 16:49:03.668 | INFO | __main__:<module>:57 - num = 0 | str_num = 0
2021-05-19 16:49:03.669 | INFO | __main__:<module>:57 - num = 1 | str_num = 1
2021-05-19 16:49:03.669 | INFO | __main__:<module>:57 - num = 2 | str_num = 2
2021-05-19 16:49:03.669 | INFO | __main__:<module>:57 - num = 10 | str_num = 10
2021-05-19 16:49:03.669 | INFO | __main__:<module>:57 - num = 11 | str_num = 11
2021-05-19 16:49:03.669 | INFO | __main__:<module>:57 - num = 100 | str_num = 100
2021-05-19 16:49:03.669 | INFO | __main__:<module>:57 - num = 123 | str_num = 123
2021-05-19 16:49:03.669 | INFO | __main__:<module>:57 - num = 1000 | str_num = 1000
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 1234 | str_num = 1234
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 10000 | str_num = 1.0万
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 11923 | str_num = 1.192万
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 5463443 | str_num = 546.344万
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 54634434 | str_num = 5463.443万
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 97736213623 | str_num = 977.362亿
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 977362136234 | str_num = 9773.621亿
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 9773621362345 | str_num = 97736.214亿
2021-05-19 16:49:03.670 | INFO | __main__:<module>:57 - num = 97736213623456 | str_num = 977362.136亿
2021-05-19 16:49:03.671 | INFO | __main__:<module>:76 - --------------------------------------------------
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 10 | hms = 00:00:10
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 59 | hms = 00:00:59
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 60 | hms = 00:01:00
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 61 | hms = 00:01:01
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 71 | hms = 00:01:11
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 120 | hms = 00:02:00
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 121 | hms = 00:02:01
2021-05-19 16:49:03.671 | INFO | __main__:<module>:87 - seconds_num = 3600 | hms = 01:00:00
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 3666 | hms = 01:01:06
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 3667 | hms = 01:01:07
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 7200 | hms = 02:00:00
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 7201 | hms = 02:00:01
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 7361 | hms = 02:02:41
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 86400 | hms = 24:00:00
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 86460 | hms = 24:01:00
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 86461 | hms = 24:01:01
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 86466 | hms = 24:01:06
2021-05-19 16:49:03.672 | INFO | __main__:<module>:87 - seconds_num = 666 | hms = 00:11:06
2021-05-19 16:49:03.673 | INFO | __main__:<module>:87 - seconds_num = 0 | hms = 00:00:00