Problem adding the large number with small number
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Erkan
am 8 Jan. 2022
Kommentiert: Star Strider
am 9 Jan. 2022
Hello everyone, I have a problem with adding numbers.
I have two numbers;
a=6.3276e+16 and b=17.3304, when adding these numbers, the result is a, that is, no addition is made.
Akzeptierte Antwort
Star Strider
am 8 Jan. 2022
The addition is made. It is necessary to display the appropriate precision to see it —
a=6.3276e+16
b=17.3304
a_plus_b = a + b
fprintf('%33.25E',a)
fprintf('%33.25E',a_plus_b)
fprintf('%33.25E',a_plus_b - a)
Floating-point numbers aren’t as accurate as necessary in that respect, however thye do their best!
.
5 Kommentare
Star Strider
am 9 Jan. 2022
As always, my pleasure!
Espanding on this with the Symbolic Math Toolbox —
a = vpa(sym(6.3276e+16))
b = vpa(sym(17.3304))
a_plus_b = vpa(a + b, 30)
So to retain full precision in interim calculations, use symbolic variables.
format long
a_plus_b = double(a_plus_b)
fprintf('%33.25E', a_plus_b)
The double conversion reverts to double-precision representation. Note that the representation is not the exact value, as computed using symbolic variables.
.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Numbers and Precision finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!