# 题目
**完善comma函数, 以支持浮点数处理和一个可选的正负号的处理**
本程序还没实现第二个功能
#代码
```go
package main
import (
"fmt"
"bytes"
"os"
"strings"
)
func commaLeft (s string) string { //commaLeft 函数实现小数点左边数字的三位分节
var buf bytes.Buffer
if len(s) <= 3 {
return s
}
n := len(s)%3
if n == 0 {
n = 3
}
buf.WriteString(s[:n])
for n < len(s) {
buf.WriteByte(',')
buf.WriteString(s[n:n+3])
n += 3
}
return buf.String()
}
func commaRight(s string) string { //commaRight 函数实现小数点右边的数字三位分节
var buf bytes.Buffer
if len(s) <= 3 {
return s
}
n := len(s)%3
if n == 0 {
n = 3
}
for i := 0; i < len(s)-n; {
buf.WriteString(s[i:i+3])
buf.WriteByte(',')
i += 3
}
buf.WriteString(s[len(s)-n:])
return buf.String()
}
func comma(s string) string { //comma 函数确定小数点在字符串中的位置,并调用
if dot := strings.LastIndex(s, "."); dot > 0 { //commaLeft 和 commaRight 函数实现三位分节
sl := s[:dot]
sr := s[dot+1:]
str := commaLeft(sl) +"."+ commaRight(sr)
return str
}
str := commaLeft(s)
return str
}
func main () {
for i := 1; i < len(os.Args); i++ {
fmt.Println(comma(os.Args[i]))
}
}
```
#测试
```shell
main.exe 123456.789234
123,456.789,234
```
有疑问加站长微信联系(非本文作者))