How to use Floor command
2 ビュー (過去 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!