对于任何以 .49 或 .99 结尾的数字,JSON 架构给出了 multipleOf 0.01 的验证错误

标签 json node.js jsonschema

我正在使用JSON Schema验证服务器请求,并且我有一些想要验证 2DP 的值。我使用以下架构来验证这些字段:

'properties': {
   'amount': {'type': ['number', 'null'], 'multipleOf': 0.01}
}

这适用于除以 .49 或 .99 结尾的数字之外的所有情况,在这些情况下我会收到错误金额不是 0.01 的倍数(可被整除)

这可能是某种浮点错误。如果这是不正确的,我应该如何验证数字达到一定的精度?

最佳答案

为了避免按照上面的建议循环和转换小数,我最终编写了一个自定义验证器:

Validator.prototype.customFormats.currency = function(input) {
    if (input === undefined) { return true}
    return (input * 100) % 1 === 0
}

关于对于任何以 .49 或 .99 结尾的数字,JSON 架构给出了 multipleOf 0.01 的验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42495493/

相关文章:

jsonschema - 如何在 JSON Schema 和 Open API (OAS) 中定义 UUID 属性

java - 在 java 中以编程方式生成 XSD

json - Python打开json文件保存在内存中

objective-c - 我可以最小化此 SBjson 代码中使用的对象数量吗?

node.js - npm 升级后 Nodejs 找不到全局模块

javascript - NodeJs 读取 JSON 文件

mysql - Compoundjs 无法与 jugglingdb-mysql 一起运行

jsonschema - 我可以用 $ref 验证做一个patternProperties吗

javascript - 如何将 JSON 对象中的数组从 javascript 传递到 asp.net mvc Controller 方法?

java - 如何从具有不同字段的同一类创建两个 json 文件