Q:

Solve: Changing parameters breaks the solution

I have the following code:
n0 = 9.54472*10^(-5)
n1 = 3.72396*10^(-4)
n2 = 7.431*10^(-4)
n3 = 1.4862*1^(-3)
P0 = 2.53413*10^(5)

k0 = Exp[(Log[n1] Log[P0] - Log[n0] Log[P1]) / (Log[n1 / n0])]
gam0 = (Log[P0 / P1]) / (Log[n0 / n1])

Solve[k0 gam0 n1^(gam0 - 1) == 1, P1]

Mathematica is able to solve the equation for small values of P0, but not for the larger values that I need to Solve it for (such as the one in my example above). 
What can I do to get this to work and to Solve this equation?  I tried replacing Solve with Reduce, but this did not help. 

A:

The equation can be solved exactly by rationalizing the coefficients first 
r = Rationalize;
n0 = r@9.54472*10^(-5);
n1 = r@3.72396*10^(-4);
n2 = r@7.431*10^(-4);
n3 = r@1.4862*1^(-3);
k0 = Exp[(Log[n1]*Log[P0] - Log[n0]*Log[P1])/(Log[n1/n0])];
gam0 = (Log[P0/P1])/(Log[n0/n1]);
s0 = First@Solve[k0*gam0*n1^(gam0 - 1) - 1 == 0, P1, Reals];
s[p_] := P1 /. s0 /. P0 -> p

LogLogPlot[{s[p0], p0}, {p0, 10^-9, 10^8}]

So for P0 >> 0.1 you may approximate P1 with P0

