Try putting this in your code:
double x(.008) ; // 8/1000
double y(.064) ; // 64/1000
double z(x+y) ; // 72/1000 ?
You'd think that z = .072. Nope, z = 0.072000000000000008. That seems REALLY
inaccurate to me. Is there a floating-point package (3rd party) that boasts
being more accurate AND is known to be reliable, simple to use, and
hopefully somewhat cheap? Thanx in advance for any help...! : )
Carl Daniel [VC++ MVP] - 24 Mar 2005 01:38 GMT
> Try putting this in your code:
>
[quoted text clipped - 6 lines]
> that boasts being more accurate AND is known to be reliable, simple to
> use, and hopefully somewhat cheap? Thanx in advance for any help...! : )
You need to learn what to expect from binary floating point. If you need
precise decimal accuracy (e.g. for financial work), you need to use a
fixed-point class, such as the System.Decimal type in .NET (which is a
wrapper over the OLE Automation Decimal type).
See http://docs-pdf.sun.com/800-7895/800-7895.pdf for lots of information on
what you can really expect from binary floating point math.
-cd