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

16 vues (au cours des 30 derniers jours)
MathWorks Support Team
MathWorks Support Team le 20 Juin 2021
mod 関数に負の入力を与えると、思っていた結果と異なる結果が出力されます。
例えば、以下の場合、-10 が出力されることを期待しましたが、90 が出力されています。
>> mod(-10,100)
ans =
90
これは、Simulink の MOD ブックも同じ結果です。

Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 29 Juil 2021
Modifié(e) : MathWorks Support Team le 29 Juil 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

Plus de réponses (0)

Catégories

En savoir plus sur プログラミング dans Help Center et File Exchange

Produits


Version

R13SP1

Community Treasure Hunt

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

Start Hunting!