diff --git a/lib/vocabularies/validation/multipleOf.ts b/lib/vocabularies/validation/multipleOf.ts index 1fd79abbd..f0e0b1f01 100644 --- a/lib/vocabularies/validation/multipleOf.ts +++ b/lib/vocabularies/validation/multipleOf.ts @@ -26,7 +26,7 @@ const def: CodeKeywordDefinition = { const res = gen.let("res") const invalid = prec ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}` - : _`${res} !== parseInt(${res})` + : _`${res} % 1 !== 0` cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`) }, } diff --git a/spec/tests/issues/large_integer_with_multiple_of.json b/spec/tests/issues/large_integer_with_multiple_of.json new file mode 100644 index 000000000..d80391eb4 --- /dev/null +++ b/spec/tests/issues/large_integer_with_multiple_of.json @@ -0,0 +1,13 @@ +[ + { + "description": "large integer is multiple of 1", + "schema": {"multipleOf": 1}, + "tests": [ + { + "description": "1e21 is multiple of 1", + "data": 1e21, + "valid": true + } + ] + } +]