首页 理论教育 浮点数输出的格式和精度控制

浮点数输出的格式和精度控制

时间:2023-10-25 理论教育 版权反馈
【摘要】:浮点数的输出通过格式和精度控制。需要指出的是,精度控制对于浮点数是实现舍入操作,而不是简单截断操作。通常涉及的stream标识以及相关的流成员函数,可以用来实现浮点数输出的控制。流成员函数precision()用于定义精度,并返回当前的浮点数精度。

浮点数输出的格式和精度控制

浮点数的输出通过格式和精度控制。通常有3种形式的输出:一般格式让具体实现为输出选一种表现形式,使之能在可用空间内以最佳形式维持这个值,精度表述了数字的最大位数,此种格式对应于printf()的%g输出格式;科学格式(scientific),通常用小数点前一位数字以及一个指数部分的方式表现数值,精度表述的是小数点之后的最大允许位数,和printf()的参数%e相关;定格格式(fixed),将值表示为一个整数部分,其后面跟小数点及一个小数部分,精度表述的是小数点之后的最大允许位数,相当于printf()的%f输出格式。通过状态操控函数来控制浮点数输出的格式。

需要指出的是,精度控制对于浮点数是实现舍入操作,而不是简单截断操作。精度控制precision()函数不影响整数的输出。

通常涉及的stream标识以及相关的流(stream)成员函数,可以用来实现浮点数输出的控制。和前面的讲述一致,多种标识分别为ios::fixed、ios::scientific和ios::none。

ios::fixed——使用小数计数法。

ios::scientific——使用科学计数法。

ios::none——使用上述两者中最合适的。(www.xing528.com)

默认情况下,参数ios::fixed和ios::scientific未被设置,此时输出的形式取决于实际情况。还可以通过使用标识符ios::showpoint来强制书写小数点,并补0,直至足够的精度为止。前面已讲过,标识符ios::showpos可用来输出正记号,标识符ios::uppercase可用来指定科学计数法中字符e的大写和小写。

流成员函数precision()用于定义精度,并返回当前的浮点数精度。调用函数precision(val)时,val为新设置的浮点数精度,并返回原来的设置值。一旦使用科学计数法,precision()可定义小数位数,其余数是通过四舍五入舍弃,而不是被截断地舍弃。另外,setprecision()函数也可以设置数值输出的精度,使用setprecision()函数时,需要包含头文件<iomanip>。而且setprecision()可以直接插入输出流中,而precision()却不能直接插入输入流和输出流中。

科学计数法和定点数的输出控制方法也包括两种:①使用setiosflags()函数;②直接将关键字(fixed)插入输出流(例cout)中;③使用setf()函数设置浮点类型,或者将标识符scientific直接插入输出流中。例如,

上述代码的输出结果为:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈