我用过这个:
long double f =79228162514264337593543950336.0;//maximum ; 2 ^ 96 because f is 12 bytes
cout.precision(30);
cout<<f;
但有些数字是错误的。为什么 ?
我用过这个:
long double f =79228162514264337593543950336.0;//maximum ; 2 ^ 96 because f is 12 bytes
cout.precision(30);
cout<<f;
但有些数字是错误的。为什么 ?
long double
文字的正确后缀是L
:
long double f =79228162514264337593543950336.0L;
您的实现提供了多大的 long double(或者,等效地,它为 LDBL_DIGITS 显示了什么值)?它通常是 80 位类型,具有约 20 个有效(十进制)数字。请特别注意,浮点类型将在尾数(有效数)和指数之间进行划分,因此如果它整体为 12 个字节,则它不会有 12 位有效数,因此您不能期望看到 12 个字节值得精确。