14.7.3 Remainder operator

王朝other·作者佚名  2006-03-10
窄屏简体版  字體: |||超大  

For an operation of the form x % y, binary operator overload resolution (?4.

2.4) is applied to select a

specific operator implementation. The operands are converted to the

parameter types of the selected

operator, and the type of the result is the return type of the operator.

The predefined remainder operators are listed below. The operators all

compute the remainder of the

division between x and y.

?Integer remainder:

int operator %(int x, int y);

uint operator %(uint x, uint y);

long operator %(long x, long y);

ulong operator %(ulong x, ulong y);

The result of x % y is the value produced by x ? (x / y) * y. If y is zero,

a

System.DivideByZeroException is thrown. The remainder operator never causes

an overflow.

?Floating-point remainder:

float operator %(float x, float y);

double operator %(double x, double y);

The following table lists the results of all possible combinations of

nonzero finite values, zeros,

infinities, and NaN?s. In the table, x and y are positive finite values. z

is the result of x % y and is

computed as x ? n * y, where n is the largest possible integer that is less

than or equal to x / y. This

method of computing the remainder is analogous to that used for integer

operands, but differs from the

IEC 60559 definition (in which n is the integer closest to x / y).

+y -y +0 -0 +8 -8 NaN

+x +z +z NaN NaN x x NaN

-x -z -z NaN NaN -x -x NaN

+0 +0 +0 NaN NaN +0 +0 NaN

-0 -0 -0 NaN NaN -0 -0 NaN

+8 NaN NaN NaN NaN NaN NaN NaN

-8 NaN NaN NaN NaN NaN NaN NaN

NaN NaN NaN NaN NaN NaN NaN NaN

?Decimal remainder:

decimal operator %(decimal x, decimal y);

If the value of the right operand is zero, a System.DivideByZeroException

is thrown. If the resulting

value is too large to represent in the decimal format, a

System.OverflowException is thrown. If the

result value is too small to represent in the decimal format, the result is

zero. The scale of the result, before

any rounding, is the larger of the scales of the two operands, and the sign

of the result, if non-zero, is the

same as that of x.

Decimal remainder is equivalent to using the remainder operator of type

System.Decimal.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航