Какова точность long double в C ++? - PullRequest
23 голосов
/ 24 января 2009

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

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

РЕДАКТИРОВАТЬ: Спасибо за быстрые ответы. Я только что подтвердил, что могу получить только 18 десятичных цифр, используя long double в моей системе.

Ответы [ 2 ]

34 голосов
/ 24 января 2009

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

#include <iostream>     // std::cout
#include <limits>       // std::numeric_limits
int main(){
    std::cout << std::numeric_limits<long double>::digits10 << std::endl;
}
5 голосов
/ 24 января 2009

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

LDBL_DIG
...