在我的平台上打印9223372036854775808.
double x = 1e19;
std::cout << static_cast<unsigned __int64>(x) << '\n';
Run Code Online (Sandbox Code Playgroud)
我尝试了Boost.NumericConversion,但得到了相同的结果.
将x分成2个相等的部分,然后将转换后的一半加在一起得到正确的结果.但我需要在模板代码中使用通用解决方案.
先感谢您.
编辑:此问题出现在Visual Studio 2008上,但不是MinGW.将4.0e9转换为unsigned long工作正常.