学Golang写的第一个撇脚程序
package main import ( "bufio" "fmt" "os" "strconv" "strings" ) //translate 将接受的数字转换为中文大写数字并附加单位 func translate(num float64) string { digital := []string{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"} unit := []string{"仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "元", "角", "分"} numString := strings.Split(strconv.FormatFloat(num*100, 'f', -1, 64), ".") integerString := numString[0] integer := make([]string, len(integerString)) for i, v := range integerString { if value, err := strconv.Atoi(string(v)); err != nil { fmt.Println("转换失败") } else { integer[i] = digital[value] } } var result []string for i, v := range unit[len(unit)-len(integer):] { result = append(result, integer[i]) result = append(result, v) } returnResult := strings.Join(result, "") //没有小数部分时删除掉末尾的"零角零分" returnResult = strings.Replace(returnResult, "零角零分", "", 1) return returnResult } func main() { s := bufio.NewScanner(os.Stdin) fmt.Print("[*] 请输入需要转换的数字: ") for s.Scan() { line := s.Text() if line == "exit" { os.Exit(0) } num, _ := strconv.ParseFloat(line, 64) if num > 999999999999 { fmt.Println("[*] 单位不应该大于千亿") } else { fmt.Printf("[+] %s \n", translate(num)) } fmt.Print("\n[*] 请输入需要转换的数字: ") } }
运行结果
PS C:\Users\root\Desktop\learngo> .\one.exe
[*] 请输入需要转换的数字: 8200.56
[+] 捌仟贰佰零拾零元伍角陆分
[*] 请输入需要转换的数字: 200
[+] 贰佰零拾零元
[*] 请输入需要转换的数字: 1234567891234
[*] 单位不应该大于千亿
Golang打包exe真舒服啊,比Python小多了😁