一蒋川、go浮點(diǎn)數(shù)轉(zhuǎn)字符串保留小數(shù)點(diǎn)后N位,并且去掉小數(shù)點(diǎn)后0
// 主要邏輯就是先乘淤齐,trunc之后再除回去,就達(dá)到了保留N位小數(shù)的效果
func FormatFloat(num float64, decimal int) string {
// 默認(rèn)乘1
d := float64(1)
if decimal > 0 {
// 10的N次方
d = math.Pow10(decimal)
}
// math.trunc作用就是返回浮點(diǎn)數(shù)的整數(shù)部分
// 再除回去展东,小數(shù)點(diǎn)后無效的0也就不存在了
return strconv.FormatFloat(math.Trunc(num*d)/d, 'f', -1, 64)
}
二、go web接收參數(shù)的驗(yàn)證
必填字段驗(yàn)證:
len(r.Form["neme"][0])==0
len(r.FormValue("name"))==0
密碼的正則驗(yàn)證
m,_=regexp.MatchString(`^([A-Z]|[a-z]|[0-9]|[-=[;,./~!@#$%^*()_+}{:?]){6,20}$`,r.Form.Get("password"))
數(shù)字驗(yàn)證:
getint,err:=strconv.Itoa(r.FormValue("name"))
if err!=nil{
//可能不是數(shù)字
}
中文驗(yàn)證:
m,_:=regexp.MatchString("^[\\x{4e00}-\\x{9fa5}]+$",r.Form.Get("name"))
if !=m{
//可能不是數(shù)字
return false
}
英文驗(yàn)證
m,_:=regexp.MatchString("^[a-zA-z]+$",r.Form.Get("name"))
if !=m{
//可能不是英文
return false
}
電子郵箱驗(yàn)證:
m,_:=regexp.MatchString(`^([\w\.\_]{2,10})@(\w{1,}).([a-z](2,4))$`,r.Form.Get("name"))
if !=m{
//可能不是電子郵箱
return false
}
手機(jī)號(hào)碼驗(yàn)證:
m,_:=regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`,r.Form.Get("name"))
if !=m{
//可能不是手機(jī)號(hào)碼
return false
}
身份證號(hào)碼
十八位:
^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
十五位:
^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$