Unexpected floor() function result?
16 次查看(过去 30 天)
显示 更早的评论
>> (1.2-floor(1.2))*10
ans =
2.0000
>> floor((1.2-floor(1.2))*10)
ans =
1
Have I misunderstood how the floor function interacts with other math operations?
采纳的回答
Adam Danz
2021-5-17
编辑:Adam Danz
2021-5-17
This is round-off error and is caused by limitation to representing floating point decimals.
1.2-floor(1.2)
1.2-floor(1.2) - 0.2000 % Reveal round-off error
Likewise,
(1.2-floor(1.2))*10
(1.2-floor(1.2))*10 - 2.000 % Reveal round-off error
Here's another example,
4/3
4/3-1
(4/3 - 1)*3
(4/3 - 1)*3 - 1 % Reveal round-off error
See this answer for a list of references to learn more about round-off error and floating point representation. If there's a specific issue you need to solve to avoid the problem, add some details and I may be able to point you in the right direction.
0 个评论
更多回答(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!