小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。
输入:s = "1294512.12412"
输出:'1,294,512.12412'
输入:s = "0000123456789.99"
输出:'123,456,789.99'
输入:s = "987654321"
输出:'987,654,321'
# python
def format_number(s):
# 将整数部分和小数部分分开
if '.' in s:
integer_part, decimal_part = s.split('.')
else:
integer_part, decimal_part = s, ''
# 移除前导的 0
integer_part = integer_part.lstrip('0')
# 格式化整数部分
formatted_integer_part = ''
for i in range(len(integer_part)):
formatted_integer_part += integer_part[i]
if (i + 1) % 3 == 0 and (i + 1) != len(integer_part):
formatted_integer_part += ','
# 拼接整数部分和小数部分
if decimal_part:
formatted_number = formatted_integer_part + '.' + decimal_part
else:
formatted_number = formatted_integer_part
return formatted_number
// golang
func formatNumber(s string) string {
// 将整数部分和小数部分分开
parts := strings.Split(s, ".")
integerPart := parts[0]
decimalPart := ""
if len(parts) > 1 {
decimalPart = parts[1]
}
// 移除前导的 0
integerPart = strings.TrimLeft(integerPart, "0")
// 格式化整数部分
formattedIntegerPart := ""
for i := 0; i < len(integerPart); i++ {
formattedIntegerPart += string(integerPart[i])
if (i+1)%3 == 0 && i+1 != len(integerPart) {
formattedIntegerPart += ","
}
}
// 拼接整数部分和小数部分
if decimalPart != "" {
formattedNumber := formattedIntegerPart + "." + decimalPart
return formattedNumber
} else {
return formattedIntegerPart
}
}
print(format_number("1294512.12412")) # '1,294,512.12412'
print(format_number("0000123456789.99")) # '123,456,789.99'
print(format_number("987654321")) # '987,654,321'
fmt.Println(formatNumber("1294512.12412")) // '1,294,512.12412'
fmt.Println(formatNumber("0000123456789.99")) // '123,456,789.99'
fmt.Println(formatNumber("987654321")) // '987,654,321'