Tag: 对数

在Kotlin或Java中,如何判断一个数是否是10的幂数?

我有一个数字(64位整数),并想知道它是否是一个纯粹的权力10.也就是说,一个1接0或更多的零。 有没有一种有效的方式来做到这一点, 而不是把它变成一个字符串? 目前我正在这样做: 科特林 fun isPowerOf10(n: Long): Boolean { val logN = Math.log10(myInt.toDouble()) return logN != Math.floor(logN) } Java的 static boolean isPowerOf10(long n) { double logN = Math.log10((double) myInt); return logN != Math.floor(logN); } 但isPowerOf10(999_999_999_999_999_999) (和负版本)失败,由于转换为double时的精度损失,并取log10 ,其精确地输出18.0 。