Problem adding the large number with small number
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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.
Risposta accettata
  Star Strider
      
      
 il 8 Gen 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 Commenti
  Star Strider
      
      
 il 9 Gen 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.  
.
Più risposte (0)
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


