Since this is (sopposed to be) computed be the compiler on a cross machine that could be anything, including a ternary one, to yield one constant integer it is strange why the progrsmmer should be conerned about details at all
Neither the computer nor the compiler is a Natural Entity that it will automatically adjust with the changing environment to sustain survival.
You have made the machine and the compiler, and you know very well what they need as input to provide the result that you want. It is a pre-negotiated system.
You are expecting 155.25 (a number with an integer part and a fractional part); but, you have declared your receiver as byte (byte x) which can accommodate only integer number. Is it right? So, you make a declaration like: float x;.
Now come to the RHS side of your equation: x = (Fcpu/(fIntprescale1024))-1;. Now you have to force (cast) the compiler to take care of the fractional part of the result during calculation. Because * (multiplication) has the higher precedence than the / (division), (fIntprescale1024) will be evaluated first. I would naturally do append cast with it. That is to say:
float x = (Fcpu/((float)fInt*prescale1024))-1;