我正在编写一个与MySQL通信的Go程序。
我有以下专栏:
lot_size double(8,8)我正在摄取一个xml提要,并在Go中解析它。下面是lot_size xml data的数据转储
(string) (len=4) "0.36"此外,有时它可能是:
(string) ""在我的Go程序中,我有以下转换:
if listings.Listings[i].LotSize == "" {
lotSize=0.00000000
} else {
lotSize,_=strconv.ParseFloat(listings.Listings[i].LotSize,8)
}Mysql产生以下错误:
Error 1264: Out of range value for column 'lot_size' at row 1
在这一点上不确定要做什么
更新
以下是解析后的浮点数据输出:
(float64) 0
34 (float64) 0.410239
35 (float64) 0.045914
36 (float64) 0.325941
37 (float64) 0.208425
38 (float64) 0.078627
39 (float64) 0.132989
40 (float64) 0.163522
41 (float64) 0.24
42 (float64) 0.230119
43 (float64) 0
44 (float64) 4.25我的sql查询是:
insert into listings (lot_size) values (?)
stmt,err:=db.Prepare(sqlStatement)
res,err:=stmt.Exec(lotSize)发布于 2019-10-25 23:19:45
上面评论中讨论的答案可以归结为:
MySQL FLOAT(8,8)类型表示该值可以有八位数,但所有八位数都必须位于小数的右侧。这意味着,如果您声明了一个带有两个相同数字的参数的FLOAT,则不能在此列中存储任何1.0或更大的值。
此处记录了此行为:https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html
顺便说一句,这种带有两个参数的非标准形式的FLOAT在MySQL 8.0.17中将被弃用,并将在未来的MySQL版本中删除。建议改用DECIMAL。
https://stackoverflow.com/questions/58560458
复制相似问题