我用过这个:
long double f =79228162514264337593543950336.0;//maximum ; 2 ^ 96 because f is 12 bytes
cout.precision(30);
cout<<f;
但有些数字错了。为什么?
答案 0 :(得分:2)
long double
文字的正确后缀为 L
:
long double f =79228162514264337593543950336.0L;
答案 1 :(得分:2)
您的实现提供了多大的long double(或者,相当于它为LDBL_DIGITS显示的值)?它通常是80位类型,具有~20个有效(十进制)数字。特别要注意的是,浮点类型将在尾数(有效数字)和指数之间划分,因此如果它总共为12个字节,那么不将具有12位有效数字,因此您可以期望看到12个字节的精度。