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

조회 수: 12 (최근 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 CenterFile Exchange에서 プログラミング에 대해 자세히 알아보기

제품


릴리스

R13SP1

Community Treasure Hunt

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

Start Hunting!