为何JSON Schema中1.1111111111111112E+28会被验证为整数?
为何JSON Schema中1.1111111111111112E+28会被验证为整数?
你可能会纳闷,这个数值看起来是带小数的科学计数法,怎么会通过integer类型的验证?其实核心原因在于JSON Schema对integer类型的判定逻辑——它不看数值的字面写法,只看解析后的实际数学值是否为整数。
具体来说:
1.1111111111111112E+28这个科学计数法表示的数,换算成十进制整数就是11111111111111112000000000000,本身没有小数部分,是一个实打实的整数。- JSON Schema的
integer类型验证规则,是检查数值的数学本质是否为整数,而非它的字符串表现形式。类似的,像2.0这种带.0的小数写法,也会被判定为符合integer类型要求。 - 你的Schema里设置了
"value": { "type": "integer" },而这个数值的实际值是整数,自然就验证通过了。
备注:内容来源于stack exchange,提问作者Evangelos Bempelis
相关产品推荐
相关产品推荐

