One can go to higher precision and also (in this case) avoid NIntegrate like so.
stdInt[df_, t_] = 
 Integrate[PDF[StudentTDistribution[df], x], {x, -t, t}, Assumptions -> t > 0 && df > 0]
(* Out[218]= (2 t Hypergeometric2F1[1/2, (1 + df)/2, 3/2, -(t^2/df)])/(Sqrt[df] Beta[df/2, 1/2]) *)
FindRoot[stdInt[300, t] == 95/100, {t, 1}, WorkingPrecision -> 20]
(* Out[227]= {t -> 1.9679030112610870301} *)
This seems to work just fine. However, if ever you need a better starting point for the root search, your approximation is a good way to get one.
normInt[t_] = 
 Integrate[PDF[NormalDistribution[0, 300/298], x], {x, -t, t}, Assumptions -> t > 0]
(* Out[228]= Erf[(149 t)/(150 Sqrt[2])] *)
FindRoot[normInt[t] == 95/100, {t, 1}, WorkingPrecision -> 20]
(* Out[230]= {t -> 1.9731181052416653378} *)
Unfortunately the higher precision is still necessary because FindRoot will resort to the precision of its inputs if that's lower than the requested WorkingPrecision. (I myself find this really annoying when it's due to a starting point, But we've yet to change that.)
Last is a method that works for this particular function. We take the log of the exact integral after function-expanding, and only evaluate for t set to an explicit real value. This avoids some conversion of the hypergeometric to numerically unusable expressions (when using machine precision).
logstdInt[df_, t_] = FunctionExpand[Log[stdInt[df, t]], Assumptions -> {t > 0, df > 0}] /. 
  Log[aa_.*Gamma[xx__]^bb_.] :> Log[aa] + bb*LogGamma[xx]
(* Out[245]= 
Log[2] - 1/2 Log[df \[Pi]] + Log[t] + 
 Log[Hypergeometric2F1[1/2, (1 + df)/2, 3/2, -(t^2/df)]] - LogGamma[df/2] + LogGamma[(1 + df)/2] *)
logstdIntNumeric[df_?NumberQ, t_Real] := logstdInt[df, t]
FindRoot[logstdIntNumeric[300, t] == Log[.95], {t, 1}]
(* Out[249]= {t -> 1.9679} *)