MATLAB double addition format long

27 views (last 30 days)
Why does the below addition show wrong output when i use the format long option ?
  1 Comment
Stephen23
Stephen23 on 3 Nov 2022
Edited: Stephen23 on 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

Sign in to comment.

Accepted Answer

Davide Masiello
Davide Masiello on 3 Nov 2022

More Answers (1)

VBBV
VBBV on 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 !

Community Treasure Hunt

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

Start Hunting!