pow() returns a floating point number, but because it's floating point, it will be either a tiny bit higher or tiny bit lower than the actual value
It MAY, not WILL, be a bit off. The Arduino is perfectly capable of representing 8 exactly as a float. It is the process that pow() uses that results in a value like 7.999998, instead of the expected 8.000000.
When printing 7.999998, the Arduino will print 8, because 7.999998, to 2 decimal places is 8.