c++ - 为什么可以使用 setprecision fixed 时使用 showpoint?

标签 c++ iostream iomanip

我不太明白 showpoint 的用途,我知道它强制显示小数点,但是在不使用 showpoint 的情况下使用“cout << setprecision << fixed”就足够了。

你能给我举个必须具备 showpoint 的例子吗?

最佳答案

当涵盖大范围的值时,可能需要格式化逻辑在定点和科学记数法的使用之间切换,同时仍然需要小数点。如果您查看此示例的输出,您会发现它不仅仅是定点表示法:

#include <iostream>

int main() {
    for (double value(1e15), divisor(1); divisor < 1e20; divisor *= 10) {
        std::cout << std::noshowpoint << (value / divisor) << '\t'
                  << std::showpoint << (value / divisor)
                  << '\n';
    }
}

这会产生输出

1e+15   1.00000e+15
1e+14   1.00000e+14
1e+13   1.00000e+13
1e+12   1.00000e+12
1e+11   1.00000e+11
1e+10   1.00000e+10
1e+09   1.00000e+09
1e+08   1.00000e+08
1e+07   1.00000e+07
1e+06   1.00000e+06
100000  100000.
10000   10000.0
1000    1000.00
100 100.000
10  10.0000
1   1.00000
0.1 0.100000
0.01    0.0100000
0.001   0.00100000
0.0001  0.000100000

关于c++ - 为什么可以使用 setprecision fixed 时使用 showpoint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552005/

相关文章:

c++ - 使用 GCC 时 std::put_money 不输出零值

c++ - 如何在 C++ 中使用 cout 打印整数值而不在逗号后添加零?

c++ - 字符串插入和取消引用_问题_

c++ - 格式化 sqlite3_exec 结果

c++ - 跨源文件模板实例化及使用

c++ - std::hex 无法处理负数?

c++ - 为什么我们使用::访问枚举值

C++/NetBeans/CygWin/Windows - <iostream> 中 Unresolved inclusion

c++ - 在使用 cout 时如何创建一个操作文本的类?

c++ - 试图理解 cin 的行为