Beware of floating point numbers

Outside of a scientific or engineering context, the use of

`float`

and `double`

(and
the corresponding wrapper classes
`Float`

and
`Double`

)
should likely be avoided. The fundamental problem is that rounding errors will always occur when using these data types -
they are unavoidable.
In a typical business application, using `float`

and `double`

to represent money values is
dangerous, because of these rounding issues. Instead,
`BigDecimal`

should usually be used to represent money.

From an IBM article on this topic:

"...binary floating-point arithmetic should not be used for financial, commercial, and user-centric applications or web services because the decimal data used in these applications cannot be represented exactly using binary floating-point."

From an article by Brian Goetz:

"...it is a bad idea to use floating point to try to represent
exact quantities like monetary amounts. Using floating point for dollars-and-cents calculations is a
recipe for disaster. Floating point numbers are best reserved for values such as measurements, whose
values are fundamentally inexact to begin with."

See Also :