Подтвердить что ты не робот

Какова точность длинного двойника в С++?

Кто-нибудь знает, как узнать точность long double на конкретной платформе? Кажется, я теряю точность после 17 десятичных цифр, что является тем же самым, что и при использовании double. Я ожидал бы получить больше, так как double представляется на моей платформе 8 байтами, а long double - 12 байт.

Прежде чем спросить, это для Project Euler, так что да, мне нужно больше 17 цифр.:)

EDIT: Спасибо за быстрые ответы. Я только что подтвердил, что могу получить только 18 десятичных цифр, используя long double в моей системе.

4b9b3361

Ответ 1

Вы можете узнать с помощью std::numeric_limits:

#include <iostream>     // std::cout
#include <limits>       // std::numeric_limits
int main(){
    std::cout << std::numeric_limits<long double>::digits10 << std::endl;
}

Ответ 2

Вы можете использовать <cfloat> . В частности:

LDBL_DIG