Unexpected for loop behaviour
1 次查看(过去 30 天)
显示 更早的评论
This for loop is supposed to run for 2 iterations i.e. for i=0 and i=-0.1 as variable outputOverVoltageChange_65 = -0.1. Why is it running for only i=0?
2 个评论
Renato SL
2019-7-9
I assume you post this question because in the output you get, there is only 1 set of entry but you expect 2.
So, can you post a screenshot/photo of the output and highlight the fact that there is only 1 entry there?
Thank you.
Walter Roberson
2019-7-9
Your variable is not exactly what you think it is, or 0:-0.1:something does not generate exactly the values you expect. Remember that 0.1 cannot be exactly represented in binary floating point.
采纳的回答
Stephen23
2019-7-9
编辑:Stephen23
2019-7-9
"Unexpected for loop behaviour"
The value -0.1 cannot be represented exactly using floating point numbers, and you could quite easily be using different values of "-0.1", even though you think that they are the same value:
>> V = -0.1
V =
-0.1000
>> V = V+eps
V =
-0.1000
>> fprintf('%.30f\n',V)
-0.099999999999999784000000000000
>> 0:-0.1:V
ans =
0
What you see printed in the command window is the closest representation to 5 or 16 significant digits, depending on your current format setting. To see the "real" value download James Tursa's FEX submission:
Use James Tursa's num2strexact and you will see that none of those values really have the exact value -0.1. All you are looking at is a representation of those floating point numbers displayed in the command window, to the precision defined by your format setting. Just because you see -0.1 displayed tells you nothing about the "real" floating point number's value.
You need to learn about the limits of floating point numbers. Start by reading these:
This is worth reading as well:
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!