floating point inaccuracies

  • Thread starter Thread starter Peteroid
  • Start date Start date
P

Peteroid

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...! : )
 
Peteroid said:
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...! : )

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
 
Back
Top