为什么long long加double运算错误


double bb=3;long long aa=31003548835085750;
  cout<

结果是31003548835085756而不是31003548835085753 为何呢

img

double类型有效数字位也是有限的,大概15,16位。你这第17位就保证不了了

long long和double都是8字节,但是规则上它们相加后的类型是double
而double是浮点数,它能表示的范围大但精度有限
long long能保证精度,但是范围小