
1个回答
展开全部
* 取余运算符 %
Java中是这样定义%运算的:对于所有的int型a和所有非0 int型数值b,满足恒等式 (a/b)*b + a%b == a,该恒等式具有正确的含义,但当它和Java中的截尾操作(3/2 == 1)结合时,它就意味着:当取余操作返回一个非零的结果时,它与左操作数具有相同的正负符号,例如:
-3/2 == -1;
3/(-2) == 1;
(-3)/(-2) == -1;
C和C++中的%运算只能对整型数进行,Java中的%运算则可以对浮点数进行。浮点数的%运算遵循以下原则:
1. 有NaN参与运算时,结果是NaN;(0%NaN 是 NaN)
2. 如果结果不是NaN,那么结果的符号和被除数符号一致;
3. 如果被除数是无穷大(NEGATIVE_INFINITY或POSITIVE_INFINITY),和/或除数是0,那么结果是NaN;
4. 如果被除数是有限值,除数是无限大,那么结果是被除数;(注意,不一定是0,0%Double.POSITIVE_INFINITY == 0.0)
5. 如果被除数是0,除数是有限值,那么结果是0;
浮点数的%运算不会抛出运行时异常,即使除数是0.0,因为此时的结果是NaN,而且,也不会出现溢出和精度丢失等问题,因为这里有无穷大存在。
Java中是这样定义%运算的:对于所有的int型a和所有非0 int型数值b,满足恒等式 (a/b)*b + a%b == a,该恒等式具有正确的含义,但当它和Java中的截尾操作(3/2 == 1)结合时,它就意味着:当取余操作返回一个非零的结果时,它与左操作数具有相同的正负符号,例如:
-3/2 == -1;
3/(-2) == 1;
(-3)/(-2) == -1;
C和C++中的%运算只能对整型数进行,Java中的%运算则可以对浮点数进行。浮点数的%运算遵循以下原则:
1. 有NaN参与运算时,结果是NaN;(0%NaN 是 NaN)
2. 如果结果不是NaN,那么结果的符号和被除数符号一致;
3. 如果被除数是无穷大(NEGATIVE_INFINITY或POSITIVE_INFINITY),和/或除数是0,那么结果是NaN;
4. 如果被除数是有限值,除数是无限大,那么结果是被除数;(注意,不一定是0,0%Double.POSITIVE_INFINITY == 0.0)
5. 如果被除数是0,除数是有限值,那么结果是0;
浮点数的%运算不会抛出运行时异常,即使除数是0.0,因为此时的结果是NaN,而且,也不会出现溢出和精度丢失等问题,因为这里有无穷大存在。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询