C++ ios 库 - Function Scientific
描述
它用于将 str 流的 floatfield 格式标志设置为科学。 当 floatfield 设置为科学时,浮点值使用科学记数法写入:该值始终以小数点前一位数字表示,后跟小数点和与精度字段(精度)一样多的小数位数。最后,这个符号总是包含一个指数部分,由字母 e 组成,后跟一个可选的符号和三个指数数字。
C++98
floatfield 格式标志既是选择性标志又是切换标志:它可以采用以下一个或多个值,如下所示 −
| 标志值 | 设置时的效果 |
|---|---|
| fixed | 用定点表示法写入浮点值 |
| scientific | 用科学计数法写入浮点值。 |
| (none) | 以默认浮点表示法写入浮点值。 |
C++11
floatfield 格式标志既是选择性标志又是切换标志:它可以采用以下任何值,或者没有如下所示 −
| 标志值 | 设置时的效果 |
|---|---|
| fixed | 以定点表示法写入浮点值。 |
| scientific | 用科学计数法写入浮点值。 |
| hexfloat | 以十六进制格式写入浮点值。 this 的值与 |
| defaultfloat | 以默认浮点表示法写入浮点值。 这是默认值(与无相同,在设置任何其他 floatfield 位之前)。 |
声明
以下是 std::scientific 函数的声明。
ios_base& scientific (ios_base& str);
参数
str − 其格式标志受影响的流对象。
返回值
它返回参数 str。
异常
Basic guarantee − 如果抛出异常,则 str 处于有效状态。
数据竞争
它修改 str。 对同一流对象的并发访问可能会导致数据竞争。
示例
在下面的示例中解释了 std::scientific 函数。
#include <iostream>
int main () {
double a = 3.1415926534;
double b = 2006.0;
double c = 1.0e-10;
std::cout.precision(5);
std::cout << "default:\n";
std::cout << a << '\n' << b << '\n' << c << '\n';
std::cout << '\n';
std::cout << "fixed:\n" << std::fixed;
std::cout << a << '\n' << b << '\n' << c << '\n';
std::cout << '\n';
std::cout << "scientific:\n" << std::scientific;
std::cout << a << '\n' << b << '\n' << c << '\n';
return 0;
}
让我们编译并运行上面的程序,这将产生以下结果 −
default: 3.1416 2006 1e-010 fixed: 3.14159 2006.00000 0.00000 scientific: 3.14159e+000 2.00600e+003 1.00000e-010

