刚才看了那个兄弟的一个关于JAVA取余数的一个计算表达式
现在来解释一下
int i,j;
i%j=i-j*(i/j)
以为计算机表达浮点数是有精度限制的,所以不能百分之百安全地表达一个浮点数
所以用整型来做取余操作是能得到准确的值的,这个能保证
刚才那个兄弟写的是 i%j=i-j*(i div j)
后来我对div的理解就是 首先不看i和j的符号,做除法,得到小数位前的数
小数点后的去掉,i和j的符号一样的话算出来的这个div就是正的
不一样的话就是负的
其实也就是JAVA中的 i / j 这个操作(前提是i和j都是整型)。
int d1 = -1293;
int d2 = -145;
int div = d1 / d2;
int result = d1 - d2 * (div);
Assert.assertEquals(result, d1 % d2);
这就是我对这个取余算法的证明。
现在来解释一下
int i,j;
i%j=i-j*(i/j)
以为计算机表达浮点数是有精度限制的,所以不能百分之百安全地表达一个浮点数
所以用整型来做取余操作是能得到准确的值的,这个能保证
刚才那个兄弟写的是 i%j=i-j*(i div j)
后来我对div的理解就是 首先不看i和j的符号,做除法,得到小数位前的数
小数点后的去掉,i和j的符号一样的话算出来的这个div就是正的
不一样的话就是负的
其实也就是JAVA中的 i / j 这个操作(前提是i和j都是整型)。
int d1 = -1293;
int d2 = -145;
int div = d1 / d2;
int result = d1 - d2 * (div);
Assert.assertEquals(result, d1 % d2);
这就是我对这个取余算法的证明。