This is the fault of integer division.

In this statement:

double pChange = (double)((newVul-oldVul)/oldVul)*100;


You are parsing it to a double AFTER dividing. Which means that it is doing...