-
-
Notifications
You must be signed in to change notification settings - Fork 195
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[📝 Docs]: Erroneous example for multipleOf
#1113
Comments
Welcome to the JSON Schema Community. We are so excited you are here! Thanks a lot for reporting your first issue!! 🎉🎉 Please make sure to take a look at our contributors guide if you plan on opening a pull request. |
Hey, Tom. Thanks for raising this. JSON Schema operates on the JSON data model, which uses arbitrary-precision numbers rather than those limited by binary representation. The JSON spec does have a note about considering the practicalities of implementation support, but it's not prescriptive. As such, we specify All of that said, I wouldn't see a downside to having a note to your points in the documentation. |
@gregsdennis this sounds like a pretty good issue to start with. I'd like to attempt it, can you please assign this to me? Moreover, please tell me if you'd like the example to be updated or to add a note explaining this nitty gritty in a note? @Tom-Hubrecht can you please link me to the page where you found this issue? That would be really helpful. Thank you! |
@Tom-Hubrecht these cases actually sound like good candidates for the test suite. Note that the spec does contain section 4.2 which discusses numeric precision. @inclinedadarsh I don't manage assignments. That's going to be @valeriahhdez primarily. That said, if you do take this, please consider the spec section linked above when working on this. The documentation should clearly state the requirement, and the implications for implementation support should be a note of some kind. I'll leave UX & styling to Valeria's expertise. |
Hello @inclinedadarsh, Thank you for your interest in this issue. The keyword I highly recommend you read our guidelines and style guide. In the latter resource, you will find rules we follow when adding notes and notices to our documentation. Let me know if you have any questions or you can also send me a DM in our Slack workspace, @Valeria Hernandez. |
Putting this example in the test suite is a good idea, but what you will see is that almost none of the existing validators is compliant because the underlying floating point numbers is incompatible with the json standard. (My opinion is that it is a deep flaw in the json spec but well...) |
I willing to bet you'd be surprised. Here's mine (https://json-everyting.net): You may also find my rant/blog post interesting as well. |
What Docs changes are you proposing?
The spec of json-schema says that a number
x
satisfies amultipleOf: m
schema when the result ofx / m
is an integer/ However, in most programming languages, the floating-point numbers are conforming to the ieee754 standard, more precisely, to its binary floating-point specification. In that case, 4.02 is not a multiple of 0.01 (as can be seen in python wherefloat(402) == 4.02 / 0.01
returnsFalse
).The example should be updated to be valid in most programming languages and specify that floating-point multiples are not what they appear to be. For example, 4.2 is a multple of 0.05 according to the spec and when doing the computation in binary floating-points.
Code of Conduct
The text was updated successfully, but these errors were encountered: