GO 大写金额转换
如題,練習一下GO的語法,有什么BUG報告我一下啊,初步測試了一下
--------------------------------------------------------------------------------------------------------------------------------------?
package mainimport ("fmt""strconv" _ "strings""math""regexp" ) func AmountConvert(p_money float64,p_round bool)string{var NumberUpper =[]string{"壹", "貳","叁","肆","伍","陸","柒","捌","玖","零"}var Unit =[]string{"分","角","圓","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟"}var regex=[][]string{{"零拾","零"},{"零佰","零"},{"零仟","零"},{"零零零","零"}, {"零零","零"},{"零角零分","整"},{"零分","整"},{"零角","零"},{"零億零萬零元","億元"},{"億零萬零元","億元"},{"零億零萬","億"},{"零萬零元","萬元"},{"萬零元","萬元"},{"零億","億"},{"零萬","萬"},{"拾零圓","拾元"},{"零圓","元"},{"零零","零"}}str,DigitUpper,Unit_Len,round:="","",0,0 if (p_money==0){return "零" } if (p_money<0){str="負";p_money=math.Abs(p_money)}if (p_round){round=2}else{round=1}Digit_byte:=[]byte(strconv.FormatFloat(p_money,'f',round+1,64)) //注意幣種四舍五入Unit_Len=len(Digit_byte)-roundfor _,v:=range(Digit_byte){if (Unit_Len>=1 && v!=46){ s,_:=strconv.ParseInt(string(v), 10, 0)if (s!=0){ DigitUpper=NumberUpper[s-1]}else{DigitUpper="零" } str=str+DigitUpper+Unit[Unit_Len-1] Unit_Len=Unit_Len-1 } }for i,_:=range(regex){ reg:= regexp.MustCompile(regex[i][0])str=reg.ReplaceAllString(str,regex[i][1]) } if (string(str[0:3])=="元"){str= string(str[3:len(str)]) } if (string(str[0:3])=="零"){ str= string(str[3:len(str)]) } return str }func main(){ fmt.Println(AmountConvert(700.098,true)) //test example //-1010000011.21 負壹拾億壹仟萬零壹拾壹圓貳角壹分 //1010000011.21 壹拾億壹仟萬零壹拾壹圓貳角壹分 //1000010000.01 壹拾億零壹萬元零壹分 //700.13 柒佰元壹角叁分 //700.03 柒佰元零叁分 //700.098 柒佰元壹角整 //700.98 柒佰元玖角捌分 //70.98 柒拾元玖角捌分 //7.98 柒圓玖角捌分 //0.098 壹角整 //0.98 玖角捌分 //98 玖拾捌圓整 // }總結
- 上一篇: JAVA后台实现文件批量下载
- 下一篇: python 中sample是什么_py