std::fixed, std::scientific, std::hexfloat, std::defaultfloat
定义于头文件 <ios>
|
||
std::ios_base& fixed( std::ios_base& str ); |
(1) | |
std::ios_base& scientific( std::ios_base& str ); |
(2) | |
std::ios_base& hexfloat( std::ios_base& str ); |
(3) | (C++11 起) |
std::ios_base& defaultfloat( std::ios_base& str ); |
(4) | (C++11 起) |
修改浮点输入/输出的默认格式化。
2) 如同以调用 str.setf(std::ios_base::scientific, std::ios_base::floatfield) ,设置流
str
的 floatfield
为 scientific
3) 如同以调用 str.setf(std::ios_base::fixed | std::ios_base::scientific, std::ios_base::floatfield) ,设置流
str
的 floatfield
同时为 fixed
和 scientific
。这启用十六进制浮点格式化。这是一个 I/O 操纵符,可用如 out << std::fixed 的表达式对任何 std::basic_ostream 类型的 out
或用如 in >> std::scientific 的表达式对任何 std::basic_istream 类型的 in
调用。
参数
str | - | 到 I/O 流的引用 |
返回值
str
(到操纵后的流的引用)
注意
十六进制浮点格式化忽略流精度规定,如 std::num_put::do_put 的规定所要求。
示例
运行此代码
#include <iostream> #include <sstream> int main() { std::cout << "The number 0.01 in fixed: " << std::fixed << 0.01 << '\n' << "The number 0.01 in scientific: " << std::scientific << 0.01 << '\n' << "The number 0.01 in hexfloat: " << std::hexfloat << 0.01 << '\n' << "The number 0.01 in default: " << std::defaultfloat << 0.01 << '\n'; double f; std::istringstream("0x1P-1022") >> std::hexfloat >> f; std::cout << "Parsing 0x1P-1022 as hex gives " << f << '\n'; }
输出:
The number 0.01 in fixed: 0.010000 The number 0.01 in scientific: 1.000000e-02 The number 0.01 in hexfloat: 0x1.47ae147ae147bp-7 The number 0.01 in default: 0.01 Parsing 0x1P-1022 as hex gives 2.22507e-308
参阅
更改浮点精度 (函数) |