problem with low infinite number

1 visualización (últimos 30 días)
Trop Trader
Trop Trader el 3 de Mzo. de 2024
Movida: John D'Errico el 6 de Mzo. de 2024
ans =
ans =
ans =
Why does subtracting 2 equal numbers produce a very small number?

Respuestas (2)

the cyclist
the cyclist el 3 de Mzo. de 2024
Editada: the cyclist el 3 de Mzo. de 2024
Because their floating-point representations are not exactly equal.
You can see that they are not quite equal:
fprintf("Ediff = %16.14f\n",Ediff(8,35))
Ediff = 7452.50000000000182
fprintf("profit = %16.14f",profit(8,35))
profit = 7452.50000000000364

John D'Errico
John D'Errico el 3 de Mzo. de 2024
They only look the same, to 4 decimal places.
format short
x = 1.23456789;
y = 1.23456987;
ans = 1×2
1.2346 1.2346
They certainly look the same to me. But only if I don't look at their actual values, down to the last digits. If I subtract them of course, they are seen to be different.
x - y
ans = -1.9800e-06
Surely you would expect the difference to be non-zero, even though, when displayed as only 5 dignificant digits, they seem identical?
format long
ans = 1×2
1.234567890000000 1.234569870000000


Más información sobre Function Creation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by