you are viewing a single comment's thread
view the rest of the comments
[–] 27 points 1 year ago (8 children)

Yep. Open your browser's console and do .1 + .2 and you get 0.30000000000000004.

One of the reasons not to use floating point when working with money.

  • source
  • parent
  • hideshow 8 child comments
  • [–] 12 points 1 year ago (7 children)

    What's the right way to do money math without floats?

  • source
  • parent
  • hideshow 7 child comments
  • [–] [S] 37 points 1 year ago (3 children)
  • [–] 6 points 1 year ago* (last edited 1 year ago)

    The same IEEE spec that introduced base-2 floating point models was updated in 2008 to include some base-10 models that eliminate these issues. Many languages already support them natively, as well as most database engines. Otherwise, you can probably find third-party-library support.

    If you don't have access to an IEEE decimal implementation, or if you just wanna be a rulebreaker, the common strategy is to just store only plain integers, and the precision level you want. So, say, if you're just dealing with simple american dollars, you'd just make sure to always interpret the integer value as "cents". If you need more precision than that, you might do "millicents".

  • source
  • parent