I have created a simple object called Object__c. Also Number field (18,0) I have created for this object called Number__c. Then I have created one record with name 'x' and Number__c value of '111 111 111 111 111 111'. When I do an aggregate query 'select SUM(Number__c) from Object__c' I receive '111111111111111100' instead of expected '111111111111111111'.
Can anyone explain to me why two last digits are discarded during SalesForce aggregate query?
Interesting thing: when I query from query explorer, both usual and aggregated query return '111111111111111100' instead of expected '111111111111111111'.
However, when I put this into a trigger,
System.debug(LoggingLevel.ERROR, '@@@ trigger.new[0].Number__c: ' + trigger.new[0].Number__c );
System.debug(LoggingLevel.ERROR, '@@@ select.new[0].Number__c: ' + [ select number__c from Object__c where Id = :trigger.new[0].Id ].Number__c );
System.debug(LoggingLevel.ERROR, '@@@ select.SUM(number__c): ' + [ select SUM(number__c) from Object__c where Id = :trigger.new[0].Id ][0].get('expr0') );
and clone or edit the record, it shows correct value '111111111111111111' for usual query but wrong value '111111111111111104' for aggregated query
The most interesting part is that wrong value from trigger is different (by 4) from wrong value from query explorer results.