PKHeX is programmed in c#; the games are not. There are certain calculations that are done using floating point which end up with different results (between the two programming languages):
Until a workaround is found, there may be some inaccuracy in the calculations (+/- 1 or ~0.0001)