精度不工作或开发失败的长双精度

Precision not working or devcpp failure in long double

本文关键字:双精度 失败 开发 工作 精度      更新时间:2023-10-16

我用了这个:

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

但是有些数字是错的。为什么?

您的实现提供了多少长度的长双精度(或者,等价地,它为LDBL_DIGITS显示了什么值)?它通常是80位类型,大约有20位有效(十进制)数字。特别要注意的是,浮点类型将分为尾数(有效数)和指数,所以如果它总共是12个字节,那么将不具有12位有效数,因此您不能期望看到12个字节的精度。

long double文字的正确后缀是 L :

long double f =79228162514264337593543950336.0L;