Skip to content
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

Open
1 task done
Tom-Hubrecht opened this issue Nov 13, 2024 · 2 comments
Open
1 task done

[📝 Docs]: Erroneous example for multipleOf #1113

Tom-Hubrecht opened this issue Nov 13, 2024 · 2 comments
Labels
📝 Documentation Indicates improvements or additions to documentation. Status: Triage This is the initial status for an issue that requires triage.

Comments

@Tom-Hubrecht
Copy link

What Docs changes are you proposing?

The spec of json-schema says that a number x satisfies a multipleOf: m schema when the result of x / 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 where float(402) == 4.02 / 0.01 returns False).

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

  • I agree to follow this project's Code of Conduct
@Tom-Hubrecht Tom-Hubrecht added Status: Triage This is the initial status for an issue that requires triage. 📝 Documentation Indicates improvements or additions to documentation. labels Nov 13, 2024
Copy link

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.
For more details, check out the README.md file.

@gregsdennis
Copy link
Member

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 multipleOf to work for floating point numbers, and we have tests to ensure implementations support it.

All of that said, I wouldn't see a downside to having a note to your points in the documentation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📝 Documentation Indicates improvements or additions to documentation. Status: Triage This is the initial status for an issue that requires triage.
Projects
None yet
Development

No branches or pull requests

2 participants