I don't know if this will make sense. Unless you've tried to do this. But the Activity.Info "average" data types, for at least Power and HR are integers. And they really should be floats.
Here is why.
Say you want to know the AVG POWER for the preceding 10 minutes (any segment of a longer activity). You have two choices.
A: You can save EVERY current power reading for every second, and calculate the segment's avg power by adding up possibly thousands of values and dividing by the number of values. Ugh
But if the avg metric was saved in ACTIVITY.INFO as a float, there is a much easier way.
B. Simply save the AVG POWER at the start of the segment, and then 10 minutes later, grab the AVG POWER again. And use a simple formula to essentially calculate the weighted value that causes that change in AVG.
Except, since the AVG metric is an integer, that approach is broken.
For example. Say you are 5 hours into a ride, and your AVG POWER was 183, and 10 mins later is 184. What was the POWER during that 10 minutes? You have no clue. Since:
That 183 could have been 182.50 to 183.49. That 184 could have been 183.50 to 184.49
Anyway - probably too late to ask Garmin to fix the precision of AVERAGE metrics. :-(