As an alternative to the answer you already received on stackexchange:
Panel[
DynamicModule[{fun = HoldForm[2.1 Sin[Pi z/2.1]]},
Column[{
Row[{
Style["Function ", 12, Blue, Editable -> False],
InputField[Dynamic[fun], FieldSize -> {55, 3}, BaseStyle -> {12}]
},
Spacer[1]],
Button[Style["Calculate", 14, Green, Editable -> False], Res = upAC[ReleaseHold@fun]],
Row[{
Style["Result ", 12, Red, Editable -> False],
InputField[Dynamic[Res], FieldSize -> {52, 2}, BaseStyle -> {12}]
},
Spacer[5]]
}],
Initialization :>
(
upAC[in_] :=
Module[
{out},
out = If[Accuracy[in] == \[Infinity], in, Rationalize[in, 10^-Accuracy[in]]];
Return[out]
];
)
]
]
