mod 関数が意図しない剰余を出力するのはなぜですか?
2 views (last 30 days)
Show older comments
MathWorks Support Team
on 20 Jun 2021
Edited: MathWorks Support Team
on 29 Jul 2021
mod 関数に負の入力を与えると、思っていた結果と異なる結果が出力されます。
例えば、以下の場合、-10 が出力されることを期待しましたが、90 が出力されています。
>> mod(-10,100)
ans =
90
これは、Simulink の MOD ブックも同じ結果です。
Accepted Answer
MathWorks Support Team
on 29 Jul 2021
Edited: MathWorks Support Team
on 29 Jul 2021
mod 関数の場合、b = mod(a,m) のとき、b = a - m.*floor(a./m)という式に基づき、かつ「ゼロまたは除数と同じ符号の結果を生成する」という仕様に従います。
その他のMATLAB の剰余を計算する関数としては、rem 関数があります。
この場合は、
b = rem(a,m) のとき、b = a - m.*fix(a./m)
という式に基づき、かつ「ゼロまたは被除数と同じ符号の結果を生成する」という仕様に従います。
>> rem(-10,100)
ans =
-10
0 Comments
More Answers (0)
See Also
Categories
Find more on 整数論 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!