Like I said, for me the values correspond exactly.
It would be interesting to know where the differences you see come from.
Is Monitor-Performance-Space-By File Type showing correct values in your case?
And the recalculation of the numbers can be forced through an API method.
Like this (I most of the time see small changes in the numbers after this call).
$dsName = 'MyDS'
$ds = Get-Datastore -Name $dsName
$ds |
Select Name,CapacityGB,FreespaceGB,
@{N='ProvisionedGB';E={($_.ExtensionData.Summary.Capacity - $_.ExtensionData.Summary.FreeSpace + $_.ExtensionData.Uncommitted)/1GB}}
$ds.ExtensionData.RefreshDatastoreStorageInfo()
$ds = Get-Datastore -Name $dsName
$ds |
Select Name,CapacityGB,FreespaceGB,
@{N='ProvisionedGB';E={($_.ExtensionData.Summary.Capacity - $_.ExtensionData.Summary.FreeSpace + $_.ExtensionData.Uncommitted)/1GB}}