在我的平臺上這個打印9223372036854775808.安全轉換
double x = 1e19;
std::cout << static_cast<unsigned __int64>(x) << '\n';
我試過Boost.NumericConversion,但得到了同樣的結果。
將x拆分成2個相等部分,然後將轉換後的一半加在一起給出正確的結果。但我需要一個通用的解決方案來使用模板代碼。
預先感謝您。
編輯: 此問題出現在Visual Studio 2008上,但不是MinGW。將4.0e9轉換爲無符號長工作正常。