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?

 採用された回答

Matt J
Matt J 2025 年 7 月 18 日
編集済み: Matt J 2025 年 7 月 18 日

0 投票

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

1 件のコメント

James
James 2025 年 7 月 18 日
編集済み: James 2025 年 7 月 18 日
Ah right, thought I was missing something obvious, thanks.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

製品

リリース

R2025a

タグ

質問済み:

2025 年 7 月 18 日

編集済み:

2025 年 7 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by