this post was submitted on 04 Jul 2025
171 points (98.3% liked)

Programmer Humor

24772 readers
866 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] deegeese@sopuli.xyz 13 points 1 day ago (2 children)

What text based serialization formats do enforce numeric precision?

AFAIK it’s always left up to the writer (serializer)

[–] squaresinger@lemmy.world 1 points 4 hours ago

Technically, JSON enforces a specific numeric precision by enforcing that numbers are stored as JS-compatible floating point numbers with its associated precision.

Other than that, the best way to go if you want to have a specific precision is to cast to string before serialisation.

[–] BodilessGaze@sh.itjust.works 6 points 1 day ago* (last edited 1 day ago) (1 children)

Cuelang: https://cuelang.org/docs/reference/spec/#numeric-values

Implementation restriction: although numeric values have arbitrary precision in the language, implementations may implement them using an internal representation with limited precision. That said, every implementation must:

  • Represent integer values with at least 256 bits.
  • Represent floating-point values with a mantissa of at least 256 bits and a signed binary exponent of at least 16 bits.
  • Give an error if unable to represent an integer value precisely.
  • Give an error if unable to represent a floating-point value due to overflow.
  • Round to the nearest representable value if unable to represent a floating-point value due to limits on precision. These requirements apply to the result of any expression except for builtin functions, for which an unusual loss of precision must be explicitly documented.
[–] deegeese@sopuli.xyz 3 points 15 hours ago* (last edited 13 hours ago) (1 children)

Thanks for teaching me something, but the obscurity of your answer just illustrates how rare that requirement is in human readable formats, and mostly limited to data formats designed for numeric precision, like HDF5, FITS or protobuf.

[–] BodilessGaze@sh.itjust.works 1 points 13 hours ago* (last edited 13 hours ago)

I don't think having well-defined precision is a rare requirement, it's more that most devs don't understand (and/or care) about the pitfalls of inaccuracy, because they usually aren't obvious. Also, languages like JavaScript/PHP make it hard to do things the right way. When I was working on an old PHP codebase, I ran into a popular currency library (Zend_Currency) that used floats for handling money, which I'm sure works fine up until the point the accountants call you up asking why they can't balance the books. The "right way" was to use the bcmath extension, which was a huge pain.