cdf =Manipulate[Column[{  
(*(#/. s_String/;StringMatchQ[s,NumberString]&&Precision@ToExpression@s==MachinePrecision:>s<>"`12."&);*)
TableForm@{elres=Resultado[x , y , o , k , n1 , n2 , tipo ]; "Resultado  = "<> ToString@ elres, 
Which[o==1, op =x+y, o==2, op=x-y, o==3, op=x*y, o==4, op=x/y];
 "Error Abs. = "<> ToString@Abs[op-elres],  "Error Rel. = "<> ToString[Abs[op-elres]/Abs[op]]}}],Style[proposito,Bold,10],Spacer[{100,3}],

{{k,3, "Número de dígitos  k ="}},{{n1,-4, "Mínimo exponente  (Subscript[n, 1]) ="}},{{n2,4, "Máximo exponente  (Subscript[n, 2]) ="}},
{{tipo,1,"Escoger:"},{1->"Truncamiento a k dígitos",2->"Redondeo a k dígitos"},
ControlType->RadioButtonBar},
{{x,0.8888888, "Primer operando  x ="}},
{{y,0.987654321, "Segundo operando  y ="}},
{{o,1,"Operación"}, {1->" x + y ",2->" x - y ",3->" x * y ", 4->" x / y "},ControlType->SetterBar, Appearance->"Row"},
Button["OK"],Alignment->Center,Deployed->True,AppearanceElements->"ResetButton",LocalizeVariables->True,ContinuousAction->False,FrameLabel->{{None,None},{Column[{,Row[{Style["Autores: Juan Félix Ávila Herrera y Enrique Vílchez Quesada",Bold,10,RGBColor[0,0,0.5]]}],Row[{Style["Escuela de Informática | Universidad Nacional de Costa Rica",Bold,10,RGBColor[0.5,0.1,0]]}]},Center],Style["Título: Aritmética con precisión finita. ", Bold,14, RGBColor[0,0.33,0.33]]}},Initialization:>(
ClearAll["Global`*"];
proposito ="Propósito: Efecturar operaciones aritméticas con precisión finita. ";
PuntoFlotante[t_, k_, n1_, n2_, tipo_] :=Module[{aux, truncado, pararedondeo, xx, tome,  losdigitos, exponente},
(*$PreRead=(#/. s_String/;StringMatchQ[s,NumberString]&&Precision@ToExpression@s==MachinePrecision:>s<>"`12."&);*)
losdigitos[xx_] := Module[{yy},yy=MantissaExponent[N[Abs[xx]]][[1]];
While[yy≠Round[yy], yy=yy*10]; 
{IntegerDigits[Round[yy]] , 0}

]; 

tome[v_, kk_] := Module[{lista =v}, 
 While[Length@lista<kk, lista =Append[lista, 0]];
Take[lista, kk]
  ];
aux =FromDigits[tome[losdigitos[t][[1]], k]] /10.^k;
exponente=MantissaExponent[N[t]][[2]];
If[exponente >n2,  Return[ "Alerta: Overflow"];Break[]];
If[0<Abs[t] <10^n1,  Return[0];Break[]];
If[t==0,    Return[ 0]; Break[]]; 

truncado = Sign[t]*aux  * 10^exponente; 
If[tipo==1,truncado=DecimalForm[ToExpression[truncado], k+1], 
pararedondeo =tome[losdigitos[t][[1]], k+1];
If[pararedondeo[[-1]] <5,truncado,
 xx=Sign[t]*( Abs@t+5*10^(exponente-k-1));
aux =FromDigits[tome[losdigitos[xx][[1]], k]] /10.^k;
exponente=MantissaExponent[N[xx]][[2]];
truncado =Sign[t]*aux * 10^exponente;
truncado =DecimalForm[ToExpression[truncado], k+1]
]
]; 
Return[ToExpression@ToString@truncado]
];

Resultado[x_, y_, o_, k_, n1_, n2_, tipo_] := Module[{ res}, 
$PreRead=(#/. s_String/;StringMatchQ[s,NumberString]&&Precision@ToExpression@s==MachinePrecision:>s<>"`12."&);
res=0;
Which[ (* PuntoFlotante[0.00125, 3, -10, 10, 1]*)
o==1,
res= PuntoFlotante[PuntoFlotante[x, k, n1, n2, tipo]+PuntoFlotante[y, k, n1, n2, tipo],  k, n1, n2, tipo],
o==2,res= PuntoFlotante[PuntoFlotante[x, k, n1, n2, tipo]-PuntoFlotante[y, k, n1, n2, tipo], k, n1, n2, tipo],
o==3,res= PuntoFlotante[PuntoFlotante[x, k, n1, n2, tipo]*PuntoFlotante[y, k, n1, n2, tipo], k, n1, n2, tipo],
o==4,res= PuntoFlotante[PuntoFlotante[x, k, n1, n2, tipo]/PuntoFlotante[y, k, n1, n2, tipo], k, n1, n2, tipo]
];
 Return[res]
];

)]