Ответ 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;
}
Кто-нибудь знает, как узнать точность long double
на конкретной платформе? Кажется, я теряю точность после 17 десятичных цифр, что является тем же самым, что и при использовании double
. Я ожидал бы получить больше, так как double
представляется на моей платформе 8 байтами, а long double
- 12 байт.
Прежде чем спросить, это для Project Euler, так что да, мне нужно больше 17 цифр.:)
EDIT: Спасибо за быстрые ответы. Я только что подтвердил, что могу получить только 18 десятичных цифр, используя long double
в моей системе.
Вы можете узнать с помощью std::numeric_limits
:
#include <iostream> // std::cout
#include <limits> // std::numeric_limits
int main(){
std::cout << std::numeric_limits<long double>::digits10 << std::endl;
}
Вы можете использовать <cfloat> . В частности:
LDBL_DIG