在使用浮点数作为因子时,对 multipleOf 的验证出现问题
作者: mqiu创建于 2018年7月12日更新于 2026年6月28日
标签bugfuture/maybevalidator
问题说明
当我将 multipleOf 值设置为浮点数时,验证可能不总是有效。例如,如果我将值设置为 multipleOf 0.01,大多数时候数值都很合适,但偶尔会返回 体内的 XXX 应为 xxx 的倍数。似乎在调用 MultipleOf 方法时,它会乘以 1/multipleOf 值并调整源值。然而,当它最终调用 swag.IsFloat64AJSONInteger 时,它会将其转换为 int 或 uint 并进行比较以确保。然而,一个问题是传入的数值仍然是浮点数,在强制转换为 int 时可能不匹配。例如,f := 1 / 0.01 * 67.15000001; f == float64(int64(f)) 将被评估为 false
内容来源: go-swagger/go-swagger