长双精度不工作或devcpp失败

时间:2011-11-04 22:10:56

标签: c++ precision double-precision

我用过这个:

  long double f =79228162514264337593543950336.0;//maximum ; 2 ^ 96 because f is 12 bytes
  cout.precision(30);
  cout<<f;

但有些数字错了。为什么?

2 个答案:

答案 0 :(得分:2)

long double文字的正确后缀为 L

long double f =79228162514264337593543950336.0L;

答案 1 :(得分:2)

您的实现提供了多大的long double(或者,相当于它为LDBL_DIGITS显示的值)?它通常是80位类型,具有~20个有效(十进制)数字。特别要注意的是,浮点类型将在尾数(有效数字)和指数之间划分,因此如果它总共为12个字节,那么将具有12位有效数字,因此您可以期望看到12个字节的精度。