이 내가 Boost.NumericConversion을 시도했지만 같은 결과를 얻었다 9223372036854775808.안전 변환 내 플랫폼에
double x = 1e19;
std::cout << static_cast<unsigned __int64>(x) << '\n';
인쇄합니다.
x을 2 등분으로 나눈 다음, 변환 된 반을 함께 더하면 정확한 결과를 얻을 수 있습니다. 하지만 템플릿 코드에서 사용할 일반 솔루션이 필요합니다.
미리 감사드립니다.
편집 : 이 문제는 Visual Studio 2008에서는 나타나지만 MinGW에서는 나타나지 않습니다. unsigned long으로 4.0e9를 캐스팅하면 정상적으로 작동합니다.