• 1 Post
  • 19 Comments
Joined 2 years ago
cake
Cake day: June 16th, 2023

help-circle
  • 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.


  • 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.















  • Probably because the individual engineers working on Takeout care about doing a good job, even though the higher-ups would prefer something half-assed. I work for a major tech company and I’ve been in that same situation before, e.g. when I was working on GDPR compliance. I read the GDPR and tried hard to comply with the spirit of the law, but it was abundantly clear everyone above me hadn’t read it and only cared about doing the bare minimum.