А до которого знака требуется рассчитать-то?
Owen10.jpg
Код:
function fact: udint; //имя функции и тип данных выхода
var_input //объявление входных переменных
inVal : udint;
index : udint;
end_var
var //объявление локальных переменных
val : udint;
fact1 : udint := 1;
fact2 : udint := 0;
fact3 : udint := 0;
fact4 : udint := 0;
fact5 : udint := 0;
fact6 : udint := 0;
fact7 : udint := 0;
fact8 : udint := 0;
delta : udint;
end_var
for val := 1 to inVal do
fact1 := fact1 * val;
fact2 := fact2 * val;
fact3 := fact3 * val;
fact4 := fact4 * val;
fact5 := fact5 * val;
fact6 := fact6 * val;
fact7 := fact7 * val;
fact8 := fact8 * val;
delta := fact1 / 1000000;
fact1 := fact1 - (delta * 1000000);
fact2 := fact2 + delta;
delta := fact2 / 1000000;
fact2 := fact2 - (delta * 1000000);
fact3 := fact3 + delta;
delta := fact3 / 1000000;
fact3 := fact3 - (delta * 1000000);
fact4 := fact4 + delta;
delta := fact4 / 1000000;
fact4 := fact4 - (delta * 1000000);
fact5 := fact5 + delta;
delta := fact5 / 1000000;
fact5 := fact5 - (delta * 1000000);
fact6 := fact6 + delta;
delta := fact6 / 1000000;
fact6 := fact6 - (delta * 1000000);
fact7 := fact7 + delta;
delta := fact7 / 1000000;
fact7 := fact7 - (delta * 1000000);
fact8 := fact8 + delta;
end_for
case index of
0: fact := fact1;
1: fact := fact2;
2: fact := fact3;
3: fact := fact4;
4: fact := fact5;
5: fact := fact6;
6: fact := fact7;
7: fact := fact8;
end_case
end_function