私はJavaで次の作業方法を持っています:
/**
* Determines if n is a power of z
*
* @param z the number that n may be a power of
* @param n the number that may be a power of z
* @return true if n is a power of z
*/
public boolean isPowerOf(int z, int n) {
double output = Math.log(n) / Math.log(z);
if(output % 1 > 0) {
return false;
} else {
return true;
}
}
isPowerOf(3, 729); //returns true, because 3^6 = 729
うまく動作しますが、最初は別の方法で試しました:
public boolean isPowerOf(int z, int n) {
double output = Math.log(n) % Math.log(z);
if(output != 0) {
return false;
} else {
return true;
}
}
しかし、 forlog(729) % log(3)
は を返すようですが1.0986122886681093
、 の結果はlog(729) / log(3) is 6
.
モジュロ演算子がまだ1.09
ここで剰余を与える原因を教えてくれる人はいますか?