mod 関数が意図しない剰余を出力するのはなぜですか?

14 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2021 年 6 月 20 日
編集済み: MathWorks Support Team 2021 年 7 月 29 日
mod 関数に負の入力を与えると、思っていた結果と異なる結果が出力されます。
例えば、以下の場合、-10 が出力されることを期待しましたが、90 が出力されています。
>> mod(-10,100)
ans =
90
これは、Simulink の MOD ブックも同じ結果です。

採用された回答

MathWorks Support Team
MathWorks Support Team 2021 年 7 月 29 日
編集済み: MathWorks Support Team 2021 年 7 月 29 日
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 件)

カテゴリ

Help Center および File Exchangeプログラミング についてさらに検索

製品


リリース

R13SP1

Community Treasure Hunt

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

Start Hunting!