cout.width和cout.fill返回不同的输出

时间:2017-07-20 04:45:34

标签: c++

int main(){  
float f = 10.12345;  
cout.width(10);  
cout.fill('*');  
cout<< f << endl;  
cout<< f << endl;   
}   

第一个cout语句输出
我预计产量为** 10.12345,但它是*** 10.1235
第二个cout语句输出
我预计产量是10.12345,但它是10.1235
有人可以解释这种行为吗?

1 个答案:

答案 0 :(得分:0)

由于默认精度值(6),您的浮点值将四舍五入到4位小数,请参考Activity因此ios_base::precision最终为10.12345

此外,第一个输出的宽度为10,值10.1235中有7个字符,剩下3个用10.1235填充,因此输出*

最后,由于默认精度,最后一个答案是舍入的答案:***10.1235