Recently, there was a swarm of threads of complaints in that various AdSense forums about how it appears the Google AdSense earnings reports are not adding up correctly. I'll isolate two Google AdSense Help Threads that have discussion about this.
The issue is really not a calculation error but rather that you are looking at the wrong date ranges.
Alan7769 explained in the thread that the problem is, "since last payment reporting is going back exactly 30 days from the current day, instead of back to the first of the month after your last payment was done." Alan recommends you use the "advanced reports and put in the actual dates from and to for your report, at least until adsense fixes the problem with the since last payment reporting."
There is a terrible amount of confusion now about this so hopefully Google will make things a bit clearly on those default reports.
Update: Google has posted a statement:
If you've seen a sudden drop in reported earnings, please note that it likely isn't due to a decrease in earnings but more because of a change in the date range.
You can confirm this by going to the reports section of your account and selecting the correct date range and running a report. For instance, if you were paid on May 26, then the Overview page will show earnings from May 26 to today's date, when you select 'Since last payment' from the drop-down.
However, when you run a report in the 'Advanced Reports' section and select May 1 to today's date, you will find the actual unpaid earnings for this period.
I've consulted our specialists and will follow up once they revert.
In the meantime, please refer any affected publishers to this thread.
Still, not all publishers are convinced or happy.