%
の負の数をどうするVF
か?
MOD(10,-3) = -2
MOD(-10,3) = 2
モード(-10,-3) = -1
なんで?
これは通常のモジュロです。
mod関数は、数値が除数の最大整数倍を超え、その数値以下である量として定義されます。
あなたはそれをこのように考えることができます:
10%-3:
-3未満の10の最大の倍数は-2です。
-2もそう10 % -3
です。
-10%3:
さて、なぜ2-10 % 3
なのですか?
それについて考える最も簡単な方法は、負の数に2の倍数を加えて、その数が正になるようにすることです。
-10 + (4*3) = 2
だから-10 % 3
=== 3 (-10 + 12) % 3
_2 % 3
The Hacker's Guide to Visual FoxPro でこれについて述べたことは次のとおりです。
MOD() と % は、正の数値を扱う場合は非常に簡単ですが、数値の一方または両方が負の場合は興味深いものになります。結果を理解する鍵は、次の式です。
MOD(x,y) = x - (y * FLOOR(x/y))
数学的モジュロ演算は負の数に対して定義されていないため、FoxPro の定義が数学的に一貫していることを確認できてうれしく思います。ただし、最初に予想したものとは異なる場合があるため、負の除数または被除数を確認することをお勧めします。
少しテスト (およびマニュアル) を行うと、正の除数は正の結果をもたらし、負の除数は負の結果をもたらすことがわかります。