JSON模式为任何以.49或.99结尾的数字提供0.01倍数的验证错误

JSON模式为任何以.49或.99结尾的数字提供0.01倍数的验证错误,json,node.js,jsonschema,Json,Node.js,Jsonschema,我正在使用来验证服务器请求,我有一些值需要验证为2DP。我已使用以下模式验证这些字段: 'properties': { 'amount': {'type': ['number', 'null'], 'multipleOf': 0.01} } 这适用于除以.49或.99结尾的数字以外的所有情况,在这些情况下,我得到的错误数量不是(可除以)0.01的倍数 这大概是某种浮点错误。如果这不正确,我应该如何验证数字到某个精度?根据您需要将数字转换为小数,以防止出现浮点算术问题。为了避免如上所述循环

我正在使用来验证服务器请求,我有一些值需要验证为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
}

我必须在ajv中定义选项多重精度