MATLAB double addition format long

20 vues (au cours des 30 derniers jours)
vivek patel
vivek patel le 3 Nov 2022
Modifié(e) : Stephen23 le 3 Nov 2022
Why does the below addition show wrong output when i use the format long option ?
  1 commentaire
Stephen23
Stephen23 le 3 Nov 2022
Modifié(e) : Stephen23 le 3 Nov 2022
"Why does the below addition show wrong output when i use the format long option ?"
Why do you think that it is a "wrong output" ?
Can you show us any double floating point number that is closer to the value 14.2?
format hex
14.2
ans =
402c666666666666
format long
14.2
ans =
14.199999999999999
N = hex2num({'402c666666666665','402c666666666666','402c666666666667'})
N = 3×1
14.199999999999998 14.199999999999999 14.200000000000001
fprintf('%.50f\n',N)
14.19999999999999751310042483964934945106506347656250 14.19999999999999928945726423989981412887573242187500 14.20000000000000106581410364015027880668640136718750

Connectez-vous pour commenter.

Réponse acceptée

Davide Masiello
Davide Masiello le 3 Nov 2022

Plus de réponses (1)

VBBV
VBBV le 3 Nov 2022
format long
x = 14.1 %
x =
14.100000000000000
x = 0.1
x =
0.100000000000000
x = 14.1 + 0.1 % when you include + operator
x =
14.199999999999999
When a mathematical operator /computation is used between any two numbers, Matlab uses its floating point arithmetic precision to compute precisely, Notice the difference in outputs when individual numbers are present without operators !

Catégories

En savoir plus sur Logical 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