delphi 中 mod函数对负数时,有问题... ( 积分: 50 )

  • 主题发起人 主题发起人 qq0879
  • 开始时间 开始时间
Q

qq0879

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi中:
-120 mod 929 = -120
C中:
mod(-120,929)=809
有没碰到过这样的问题?请大家支招....快急死人啦!
 
C中应该是 用 %吧
 
delphi中:
-120 mod 929 = -120

没错啊,这是正确的结果。
 
说这里有问题,那里有问题的人都是自己水平不行,瞎嚷嚷.
mod是Pascal的操作符.对应C的%
-120 % 929 = -120
 
C中Mod
mod函数是一个求余函数,其格式为:
mod(nExp1,nExp2),即是两个数值表达式作除法运算后的余数。那么:两个同号整数求余与你所知的两个正数求余完全一样(即两个负整数与两个正整数的算法一样)。
一、两个异号整数求余
1.函数值符号规律(余数的符号)
mod(负,正)=正
mod(正,负)=负
结论:两个整数求余时,其值的符号为除数的符号。
2.取值规律
先将两个整数看作是正数,再作除法运算
①能整除时,其值为0
②不能整除时,其值=除数×(整商+1)-被除数
例:mod(9,-8)=-7
即:9除以8的整数商为1,加1后为2;其与除数之积为18;再与被数之差为7;取除数的符号。所以值为-7。
二、两个小数求余
取值规律:被除数-(整商×除数)之后在第一位小数位进行四舍五入。
例:mod(9,1.2)=1
即:9除1.2其整商为7;7与除数1.2之积为8.4;8.4四舍五入之后为8;被除数9与8之差为1。故结果为1。
例:mod(9,2.4)=0
即:9除2.2其整商为4;4与除数2.2这积为8.8;8.8四舍五入之后为9;被除数9与9之差为0。故结果为0
 
lz自己不看帮助就上来乱叫

The value of x div y is the value of x/y rounded in the direction of zero to the nearest integer.

The mod operator returns the remainder obtained by dividing its operands. In other words, x mod y = x -(x div y) * y.

按照delphi帮助,-120 div 929=0
所以-120 mod 929=-120
 
后退
顶部