std::fixed, std::scientific, std::hexfloat, std::defaultfloat

来自cppreference.com
< cpp‎ | io‎ | manip
 
 
 
输入/输出操纵符
浮点格式化
fixedscientifichexfloatdefaultfloat
(C++11)(C++11)
整数格式化
布尔格式化
域宽与填充控制
其他格式化
空白符处理
输出冲入
状态标志操纵
时间与金钱 I/O
(C++11)
(C++11)
(C++11)
(C++11)
带引号操纵符
(C++14)
 
定义于头文件 <ios>
(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 起)

修改浮点输入/输出的默认格式化。

1) 如同以调用 str.setf(std::ios_base::fixed, std::ios_base::floatfield) ,设置流 strfloatfieldfixed
2) 如同以调用 str.setf(std::ios_base::scientific, std::ios_base::floatfield) ,设置流 strfloatfieldscientific
3) 如同以调用 str.setf(std::ios_base::fixed | std::ios_base::scientific, std::ios_base::floatfield) ,设置流 strfloatfield 同时为 fixedscientific 。这启用十六进制浮点格式化。
4) 如同以调用 str.unsetf(std::ios_base::floatfield) ,设置流 strfloatfield 为零,这异于 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

参阅

更改浮点精度
(函数)