0.9-0.89 is 0.01000000​0000000000​2081668171​17217

1 vue (au cours des 30 derniers jours)
john
john le 15 Août 2013
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

Réponse acceptée

Image Analyst
Image Analyst le 15 Août 2013
  2 commentaires
James Tursa
James Tursa le 15 Août 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:
john
john le 15 Août 2013
OK , thank you

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Manage Products dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by