3

showpoint の目的がよくわかりません。小数点を強制的に表示することはわかっていますが、showpoint を使用しなくても「cout << setprecision << fixed」で十分です。

showpoint が必須である例を教えてください。

4

2 に答える 2

4

広範囲の値をカバーする場合、小数点を必要とする一方で、固定小数点と科学的表記法を切り替えるフォーマット ロジックを持つことが望ましい場合があります。この例の出力を見ると、それが単なる固定小数点表記ではないことがわかります。

#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
于 2015-02-16T23:38:52.923 に答える
3

精度が 0 でshowpoint使用されていない場合、小数点は表示されません。それ以外の場合は表示されます。

#include <iostream>
#include <iomanip>

int
main()
{
    double pi = 2646693125139304345./842468587426513207.;
    std::cout << std::fixed << std::setprecision(0);
    std::cout << pi << '\n';
    std::cout << std::showpoint;
    std::cout << pi << '\n';
}

出力する必要があります:

3
3.
于 2015-02-16T23:38:03.763 に答える