0.9-0.89 is 0.01000000​0000000000​2081668171​17217

1 view (last 30 days)
Hi, why
0.9-0.89 is 0.010000000000000000208166817117217?
I want to use it in:
if a-b<c sprintf('error') end......
when I use vpa, than I get error in if..
thank you

Accepted Answer

Image Analyst
Image Analyst on 15 Aug 2013
  2 Comments
James Tursa
James Tursa on 15 Aug 2013
@John, For your particular example:
>> num2strexact(0.9)
ans =
0.90000000000000002220446049250313080847263336181640625
>> num2strexact(0.89)
ans =
0.89000000000000001332267629550187848508358001708984375
>> num2strexact(0.9-0.89)
ans =
1.00000000000000088817841970012523233890533447265625e-2
As you can see above, none of the numbers involved can be represented exactly in IEEE double precision floating point. You can find NUM2STREXACT here:

Sign in to comment.

More Answers (0)

Categories

Find more on Manage Products in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!