How to use Floor command
7 次查看(过去 30 天)
显示 更早的评论
I have some wrong thing with floor command. This problem is that
Step 1: Initial step
t=[0.90 1.00 1.30 1.80 1.90];
step = (t(5)-t(1))/100;
time = t(1):step:10;
Step 2: Check floor command
time(181)
ans =
2.7000
floor((time(181)-0.9)/(2*0.9))
ans =
0
*But i realize that*
floor((2.7-0.9)/(2*0.9))
ans =
1
What problem was happen in this case?
Question 2: Logic condition
t_ = 4.5 - 4*0.9
t_ =
0.9000
t_ >= 0.9
ans =
0
But
0.9>=0.9
ans =
1
0 个评论
采纳的回答
Matt Fig
2012-10-4
编辑:Matt Fig
2012-10-4
You have fallen into thinking that you are using infinite precision arithmetic when you are only using double precision. This is such a common mistake that it has its own FAQ.
Here is a little more about is going on:
t = [0.90 1.00 1.30 1.80 1.90];
step = (t(5)-t(1))/100;
time = t(1):step:10;
A = time(181)-0.9;
B = 2*0.9;
C = A/B;
fprintf('%16.16f\n',time(181),A,B,C)
2.6999999999999997
1.7999999999999998
1.8000000000000000
0.9999999999999999
As for the second question: same problem:
fprintf('%16.16f\n',4.5 - 4*0.9)
0.8999999999999999
0 个评论
更多回答(3 个)
Honglei Chen
2012-10-4
This has nothing to do with floor, it's part of the floating point computation. See the link below
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!