#include <iostream>
#include <limits>

using namespace std;

int main() {
	const auto ui64max = numeric_limits<uint64_t>::max();
	const auto foo = ui64max - 1;
	const auto bar = static_cast<long double>(foo) / ui64max;
	
	cout << "Max Digits For Roundtrip Guarantee: " << numeric_limits<long double>::digits << "\nMax Digits In uint64_t: " << numeric_limits<uint64_t>::digits << "\nConverting: " << foo << "\nTo long double Mantissa: " << bar << "\nRoundtrip Back To uint64_t: " <<  static_cast<uint64_t>(bar * ui64max) << endl;
}