Hello guys, I found a logic mistake in the source code that is been given with the book.
Given a number as a double value and determine if this number is a power of 2 by using a loop instead
o log2() function. It goes as follows.
val number = 1024.0 //The number you want to check if is a power of 2
var dividend = number
while (“%.0f”.format(dividend % 2).toInt() == 0) {
dividend /= 2
}
if (dividend == 1.0) {
println(“$number is a power of 2”)
} else {
println(“$number is not a power of 2”)
}
Of course, you can make it using other loops as well. That one, it works fine!
1 Like
Thank you so much! I have confirmed your solution works and it will be in an updated version of the book.
1 Like
Actually, it’s simpler instead of using string.format(argument) and convert it to Int and then make the control,
just apply the variable as follows:
val number = 1024.0 //The number you want to check if is a power of 2
var dividend = number
while (dividend % 2 == 0.0) {
dividend /= 2.0
}
if (dividend == 1.0) {
println(“$number is a power of 2”)
} else {
println(“$number is not a power of 2”)
}
1 Like
Thanks for your feedback, great idea! No need to convert it to a string. I have updated the code and it will be shipped in the next version of the book.
1 Like