Some values are losing precision in the IQR problem (2), likely because of the float return type. Example:
#include <iostream>
#include <iomanip>
int main()
{
float n = 12777776.50;
std::cout << std::fixed << std::setprecision(2) << n; // 12777776.00
return 0;
}