I think the problem still exists using the method you have shown. Sure you can take each digit and divide it by a number, but in the end you are left with a whole pile of individual place values that still need to be added up. If the numbers are large, that act of adding will likely result in the same rounding error. Ex:
//echo -a $calc(7700000000000000000000000 / 2) = $calc(3500000000000000000000000 + 350000000000000000000000)
The only way I can see this possibly working is to use loops to basically do true long division. Take portions of the original value, perform the division on those portions, and then gradually add the individual results together to get the final answer.
-genius_at_work