Modulo with expression not the same as modulo with value

Why does mod(1, Y-X) not approximately equal 0?
mod(1, 0.1)
ans = 0
X = 2;
Y = 2.1;
Y - X
ans = 0.1000
mod(1, Y - X)
ans = 0.1000
I realize that Y - X ~= 0.1 but
isapprox(Y - X, 0.1, "loose")
ans = logical
1
therefore, why not
isapprox(mod(1, Y - X), 0, "loose")
ans = logical
0
My guess is that it is either something to do with floating point precision or the fact that it is an expression vs. a value?

 Accepted Answer

Because mod(1,z) is a discontinuous function of z at 0.1,
fplot(@(z) mod(1,z),[0,0.2])

1 Comment

Ah right, thought I was missing something obvious, thanks.

Sign in to comment.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Products

Release

R2025a

Tags

Asked:

on 18 Jul 2025

Edited:

on 18 Jul 2025

Community Treasure Hunt

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

Start Hunting!