0.9-0.89 is 0.01000000​0000000000​2081668171​17217

1 回表示 (過去 30 日間)
john
john 2013 年 8 月 15 日
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

採用された回答

Image Analyst
Image Analyst 2013 年 8 月 15 日
  2 件のコメント
James Tursa
James Tursa 2013 年 8 月 15 日
@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 2013 年 8 月 15 日
OK , thank you

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeManage Products についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by