Потому что некорректно прописано здесь:
int init()
{
if (Digits < 4)
{
pp = 0.01;
} else
{
pp = 0.0001;
}
return(0);
}
Это корректно для 4-х знака.
Я бы лучше прописал так (для любого количества знаков):
int init()
{
pp=1/MathPow(10,Digits) ;
return(0);
}
Что-то не получается перевести на 5 знак ДЦ