问题描述
小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0
,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。
测试样例
样例1:
输入:
s = "1294512.12412"
输出:
'1,294,512.12412'
样例2:
输入:
s = "0000123456789.99"
输出:
'123,456,789.99'
样例3:
输入:
s = "987654321"
输出:
'987,654,321'
python
def solution(s: str) -> str:
# 先处理字符串,移除前导零
# 使用 lstrip('0') 移除前面的零
# 如果移除后为空字符串,说明输入的是 "0" 或 "0.00" 等情况,设置为 "0"
stripped_s = s.lstrip('0') or '0'
# 查找小数点的位置
if '.' in stripped_s:
integer_part, decimal_part = stripped_s.split('.')
else:
integer_part, decimal_part = stripped_s, ''
# 格式化整数部分,使用 format 函数和千分位格式
# 将整数部分转为千分位形式
formatted_integer_part = f"{int(integer_part):,}"
# 组装最终的结果
if decimal_part:
result = f"{formatted_integer_part}.{decimal_part}"
else:
result = formatted_integer_part
return result
if __name__ == '__main__':
# 测试用例
print(solution("1294512.12412") == '1,294,512.12412') # 输出: True
print(solution("0000123456789.99") == '123,456,789.99') # 输出: True
print(solution("987654321") == '987,654,321') # 输出: True