format long addition problem

with format long
7.5e-6+1e-7
ans =
7.600000000000000e-06
>> 7.6e-6+1e-7
ans =
7.700000000000001e-06
**why not 7.6e-6+1e-7
ans = 7.700000000000000e-06**
and how can i avoid this 0.000000000000001e-06???

Réponses (1)

Walter Roberson
Walter Roberson le 1 Avr 2013

0 votes

2 commentaires

AR
AR le 1 Avr 2013
Modifié(e) : Walter Roberson le 1 Avr 2013
how can i convert 7.700000000000001e-06 to 7.7e-06????
You can use the symbolic toolbox, or you can use the fixed-point toolbox, or you can write your own Class for decimal arithmetic, or you can use a totally different tool that already implements decimal arithmetic.
There is no exact representation for 7.7e-06 in IEEE 754 binary floating point such as is used by MATLAB (and which is an international standard for numeric representation.) The closest you can get is
7.70000000000000081623076353398715809817076660692691802978515625e-06

Connectez-vous pour commenter.

Produits

Question posée :

AR
le 1 Avr 2013

Community Treasure Hunt

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

Start Hunting!

Translated by