Sulla mia piattaforma di questa stampa 9223372036854775808.conversione sicura dal doppio al senza segno a 64 bit integer
double x = 1e19;
std::cout << static_cast<unsigned __int64>(x) << '\n';
ho provato Boost.NumericConversion, ma ho ottenuto lo stesso risultato.
Splitting x in 2 parti uguali, quindi sommando le metà convertite si ottiene il risultato corretto. Ma ho bisogno di una soluzione generica da utilizzare in un codice modello.
Grazie in anticipo.
MODIFICA: Questo problema si presenta su Visual Studio 2008, ma non su MinGW. La conversione di 4.0e9 in lavori non firmati va bene.