There are a few reasonable ways. I'll illustrate with an example of Newton iterations for square roots, take from this MathGroup post
r[x_, n_] := x - (x^2 - n)/(2*x)
x = 1.0`20;
two = 2.0`20;
First we run it with the usual arithmetic.
Table[x = r[x, two], {30}]
(* Out[680]= {1.4142135623730950488, 1.4142135623730950488, \
1.414213562373095049, 1.414213562373095049, 1.414213562373095049, \
1.41421356237309505, 1.41421356237309505, 1.41421356237309505, \
1.4142135623730950, 1.4142135623730950, 1.4142135623730950, \
1.4142135623730950, 1.414213562373095, 1.414213562373095, \
1.414213562373095, 1.41421356237310, 1.41421356237310, \
1.41421356237310, 1.4142135623731, 1.4142135623731, 1.4142135623731, \
1.4142135623731, 1.414213562373, 1.414213562373, 1.414213562373, \
1.41421356237, 1.41421356237, 1.41421356237, 1.4142135624, \
1.4142135624} *)
We can force fixed precision as below. I'll just show a few iterations.
x = 1.0`20; NumericalMath`FixedPrecisionEvaluate[
Table[x = r[x, two], {10}], 20]
(* Out[681]= {1.5000000000000000000, 1.4166666666666666667, \
1.4142156862745098039, 1.4142135623746899106, 1.4142135623730950488, \
1.4142135623730950488, 1.4142135623730950488, 1.4142135623730950488, \
1.4142135623730950488, 1.4142135623730950488} *)
Alternatively, use SetPrecision
explicitly to reset upward.
x = 1.0`20;
Table[x = SetPrecision[r[x, two], 20], {10}]
(* Out[683]= {1.5000000000000000000, 1.4166666666666666667, \
1.4142156862745098039, 1.4142135623746899106, 1.4142135623730950488, \
1.4142135623730950488, 1.4142135623730950488, 1.4142135623730950488, \
1.4142135623730950488, 1.4142135623730950488} *)
Last is to temporarily set min and max precisions to be equal. Block
is good for this type of localized assignment.
x = 1.0`20;
Block[{$MinPrecision = 20, $MaxPrecision = 20},
Table[x = r[x, two], {10}]]
(* Out[685]= {1.5000000000000000000, 1.4166666666666666667, \
1.4142156862745098039, 1.4142135623746899106, 1.4142135623730950488, \
1.4142135623730950488, 1.4142135623730950488, 1.4142135623730950488, \
1.4142135623730950488, 1.4142135623730950488} *)
tbyte
or IEEE 754's binary128 formats would provide, but potentially with even more precision and range. $\endgroup$