Problem adding the large number with small number
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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.
Réponse acceptée
Star Strider
le 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 commentaires
Star Strider
le 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.
.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Numbers and Precision dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!