Why 0.6+0.3+0.1-1 is -1.11022302462516e-16, not 0 ? why?? A serials bug??

8 views (last 30 days)
0.6+0.3+0.1-1
  1 Comment
denny
denny on 9 Sep 2019
Edited: denny on 26 Feb 2025
This is a bug? this is bucase the numeric calculation in a computer.
You can use a fraction to calculate it.

Sign in to comment.

Answers (1)

cdarling
cdarling on 4 Jun 2025
As a numerical calculation software, MATLAB stores data as double data type by default.
IEEE-754 is the standard for double data type.
This may better explained by the following code:
>> num2hex(0.1)
ans =
'3fb999999999999a'
>> num2hex(0.1+0.1+0.1)
ans =
'3fd3333333333334'
>> num2hex(0.3)
ans =
'3fd3333333333333'
If you need to calculate the theoretical value, you may try Symbolic Math Toolbox:
sym('0.6')+sym('0.3')+sym('0.1')-sym('1')

Categories

Find more on 建模 in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!