请教cout精度问题

问题遇到的现象和发生背景

最近在思考cout的问题,不知道如果setprecision一个很高的精度会发生什么,然后就会出现下面的结果。

问题相关代码,请勿粘贴截图

cout << setprecision (128) << 1.3 << endl;

运行结果及报错内容

img

我的解答思路和尝试过的方法

请问为什么是这样的结果,double最多用17位十进制数就能全部表示,为什么打印的时候会出现其它数字?