Method:
void Math::GetIntegerAndFractionalParts(long double num, uint64_t & integer, long double & fraction){ integer = static_cast<uint64_t>(num); fraction = num - static_cast<long double>(integer);}
Usage example:
long double num = 1.23;long double frac;uint64_t intg;Math::GetIntegerAndFractionalParts(num, intg, frac);std::cout << "Number : " << num << std::endl;std::cout << "Integer part : " << intg << std::endl;std::cout << "Fractional : " << frac << std::endl << std::endl;num = -1.23;Math::GetIntegerAndFractionalParts(num, intg, frac);std::cout << "Number : " << num << std::endl;std::cout << "Integer part : " << intg << std::endl;std::cout << "Fractional : " << frac << std::endl << std::endl;num = -567.89;Math::GetIntegerAndFractionalParts(num, intg, frac);std::cout << "Number : " << num << std::endl;std::cout << "Integer part : " << intg << std::endl;std::cout << "Fractional : " << frac << std::endl << std::endl;num = Math::E; // Natural logarithm baseMath::GetIntegerAndFractionalParts(num, intg, frac);std::cout << "Number : " << num << std::endl;std::cout << "Integer part : " << intg << std::endl;std::cout << "Fractional : " << frac << std::endl << std::endl;
Output:
Number : 1.23Integer part : 1Fractional : 0.23Number : -1.23Integer part : 18446744073709551615Fractional : -1.84467e+019Number : -567.89Integer part : 18446744073709551049Fractional : -1.84467e+019Number : 2.71828Integer part : 2Fractional : 0.718282