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

4 次查看(过去 30 天)
0.6+0.3+0.1-1
  1 个评论
denny
denny 2019-9-9
编辑:denny 2025-2-26
This is a bug? this is bucase the numeric calculation in a computer.
You can use a fraction to calculate it.

请先登录,再进行评论。

回答(1 个)

cdarling
cdarling 2025-6-4
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')

类别

Help CenterFile Exchange 中查找有关 建模 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!