#include <algorithm> #include <stdint.h> #include <iostream> double to_double(uint64_t x) { union {double d; uint64_t x;} u; u.x = x; return u.d; } int main() { std::vector<double> v = { to_double(4606672070890243784), to_double(4606672025854247510), to_double(4606671800674266141), to_double(4606671575494284772), to_double(4606672115926240057), to_double(4606672160962236330), to_double(4606672070890243784), }; for (auto i : v) std::cout << i << std::endl; std::nth_element(v.begin(), v.begin() + 3, v.end()); return 0; }