August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
默认设置下,defaultfloat格式用总共6位数字来输出一个浮点值。流会选择最适合的格式,浮点值按6位数字(defaultfloat格式的默认精度)所能表示的最佳近似方式进行舍入。例如:
1234.567输出为1234.57
1.2345678输出为1.23457
舍入规则采用常用的4/5规则:0到4舍,5至9入。注意,浮点格式只对浮点数起作用,于是
1234567输出为1234567(因为这是一个整数)
1234567.0输出为1.23457e+006
在第二个例子中,ostream判断出1234567.0在fixed格式下不能只用6位数字输出,因此选择scientific格式,保持最为精确的表示形式。基本上,defaultfloat格式在scientific和fixed两种格式间进行选择,期望将浮点数以最精确的表示形式呈现给用户,所采用的精度限定为general格式的精度——默认为6位数字长度。
试一试
编写代码,三次输出浮点数1234567.89,分别采用defaultfloat、fixed和scientific格式。哪种格式呈现给用户最精确的表示形式?解释为什么。
程序员可以使用操纵符setprecision()来设置精度,例如:
会输出(注意舍入): ...