Addition on floating point numbers isn't associative. That is results can depend on an order of summation. You'll get yet another result if you'll sum them backwards: c.iter().rev().sum().
An old project manager of mine used to tell new boys on the team:
"If you think you need floating point to solve a problem then you don't understand the problem. If you actually need floating point to solve a problem then you will not understand the problem."
Of course our hardware at the time did not support floating point and we could not afford the time to do it in software. But every now and then something pops up to remind me of how right he was.