c++ 输出有关问题

c++ 输出问题
double a = 123.456789012345;
cout<<setprecision(9);
cout<<a<<endl;

得出的结果是123.456789这个没问题,但代码变成:
double a = 123.456789912345;
cout<<setprecision(9);
cout<<a<<endl;
输出的结果却是123.45679 为会么啊?8哪去了?

------解决方案--------------------
setprecision(int)控制输出流显示浮点数的有效数位(数字个数)
对于double a = 123.456789012345
有效位是 123.456789(0)舍去
对于double a = 123.456789912345
有效位是 123.456789(9)舍入
   变成    123.456790
   输出    123.45679