gin ShouldBindJSON后 浮点数精度丢失
1. 运行环境
mac golang 1.15
2. 问题描述?
使用验证绑定参数后 浮点数精度丢失、gin ShouldBindJSON后 浮点数精度丢失
// 查询资源类信息
type ResourceParam struct {
Acom float64 `json:"acom" binding:"required"`
}
func (h *test) test(c *gin.Context) {
// 参数校验
var params ResourceParam
if err := c.ShouldBindJSON(¶ms); err != nil {
return
}
fmt.Println(params)
// 原值1.00、现在 输出 1
return
}
3. 您期望得到的结果?
输出 1.00
4. 您实际得到的结果?
输出 1
当float64类型的值可以取整时,会自动取整。如 1.00 会等于 1,而 1.01 会等于 1.01,取整过程中类型并不会改变。
如果想要展示出现 1.00 的话,可以使用
fmt.Sprintf()
进行格式化输出,如fmt.Sprintf("%.2f", float64(1))
等于 1.00