如何拆分未知十进制时间数值为多时间单位组合的可读格式
实现逻辑
核心思路是直接操作字符串避免浮点精度丢失,步骤如下:
- 输入预处理:将输入中所有逗号替换为小数点,兼容欧洲地区用逗号做小数分隔符的格式
- 拆分数值:按小数点把输入拆为整数段(对应秒的整数部分)和小数段
- 补位处理:整数段不足3位时前面补零,小数段不足12位时后面补零,超过12位时可按需求截断或四舍五入(到皮秒精度只需要12位小数)
- 分段映射:把补位后的小数段按每3位切割为4段,依次对应毫秒、微秒、纳秒、皮秒的数值
- 拼接输出:将每段数值和对应单位组合即可
代码示例(Python)
def format_time(input_val: str) -> str: # 预处理:替换逗号为小数点 processed = input_val.replace(',', '.') # 拆分整数和小数部分 if '.' in processed: int_part, decimal_part = processed.split('.', 1) else: int_part = processed decimal_part = '' # 整数部分补前导零到3位,超过3位保留原值 formatted_int = int_part.zfill(3) # 小数部分补后导零到12位,取前12位 formatted_decimal = decimal_part.ljust(12, '0')[:12] # 按3位切割小数部分 ms = formatted_decimal[0:3] us = formatted_decimal[3:6] ns = formatted_decimal[6:9] ps = formatted_decimal[9:12] # 拼接结果 return f"{formatted_int} seconds {ms} miliseconds {us} microseconds {ns} nanoseconds {ps} picoseconds"
测试效果
- 输入
0.000000000123,输出:000 seconds 000 miliseconds 000 microseconds 000 nanoseconds 123 picoseconds - 输入
123,456789123456,输出:123 seconds 456 miliseconds 789 microseconds 123 nanoseconds 456 picoseconds - 输入
5,输出:005 seconds 000 miliseconds 000 microseconds 000 nanoseconds 000 picoseconds
如果需要调整秒的显示长度,或者增加更大的时间单位(分钟、小时等),只需要调整整数部分的分段逻辑即可。
内容的提问来源于stack exchange,提问作者Strelok
相关产品推荐
相关产品推荐

