The values that you assign to voltage and power are bigger than what can be stored in a byte so you probably want to use a different type, such as double, for these variables.
Not positive at all, but it could be due to integer division. C and C++ will truncate the result if you divide an integer by an integer.
For example, your power variable is of type byte, which I assume is a typedef for unsigned char, an integer type. when you do (volage - 27620) / 85 and ((power - 288) / 244) you are doing integer division.
Edit; I also agree with what Peter87 said, that makes sense.
It may just be rounding the output once you print the number to the screen, not necessarily rounding the actual number. You can check this by trying to print to the console the output using printf as such: printf("power out %.4f",power); (instead of .4 you can specify how many digits come after the decimal place in, .x = "x digits" after decimal place).
This may or may not be the issue...
(of course you need to #import <stdio.h> if your going to use printf)
thanks guatemala007 but appearently does not work on arduino platform... as I tried what you suggested and Printf is simply irgnored no worries.. thank you for you help and suggestion