in src/Json.Schema.Validation/Validator.cs [193:242]
private void ValidateNumber(JValue jValue, JsonSchema schema)
{
if (schema.Maximum.HasValue)
{
double maximum = schema.Maximum.Value;
double value = jValue.Type == JTokenType.Float
? (double)jValue.Value
: (long)jValue.Value;
if (schema.ExclusiveMaximum == true && value >= maximum)
{
AddResult(jValue, ErrorNumber.ValueTooLargeExclusive, value, maximum);
}
else if (value > maximum)
{
AddResult(jValue, ErrorNumber.ValueTooLarge, value, maximum);
}
}
if (schema.Minimum.HasValue)
{
double minimum = schema.Minimum.Value;
double value = jValue.Type == JTokenType.Float
? (double)jValue.Value
: (long)jValue.Value;
if (schema.ExclusiveMinimum == true && value <= minimum)
{
AddResult(jValue, ErrorNumber.ValueTooSmallExclusive, value, minimum);
}
else if (value < minimum)
{
AddResult(jValue, ErrorNumber.ValueTooSmall, value, minimum);
}
}
if (schema.MultipleOf.HasValue)
{
double factor = schema.MultipleOf.Value;
double value = jValue.Type == JTokenType.Float
? (double)jValue.Value
: (long)jValue.Value;
double quotient = value / factor;
if (quotient != (int)quotient)
{
AddResult(jValue, ErrorNumber.NotAMultiple, value, factor);
}
}
}