zoukankan      html  css  js  c++  java
  • setprecision(int n)等格式函数用法 分类: POJ 2015-06-11 10:56 17人阅读 评论(0) 收藏

    **这些用法前最好用

    #include <iostream>    //不要用iostream.h ,会出现好多问题

    #include <iomanip> // io 流控制头文件, 主要是一些操纵用法如setw(int n),setprecision(int n)

    //,setbase(int   n),setfill(char c)的.

    ▲setw(n)用法: 通俗地讲就是预设宽度

    如 cout<<setw(5)<<255<<endl;

    结果是:

    (空格)(空格)255

    ▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充

    如 cout<<setfill('@')<<setw(5)<<255<<endl;

    结果是:

    @@255

    ▲setbase(int n) : 将数字转换为 n 进制.

    如 cout<<setbase(8)<<setw(5)<<255<<endl;

    cout<<setbase(10)<<setw(5)<<255<<endl;

    cout<<setbase(16)<<255<<endl;

    结果是:

    (空格)(空格)377

    (空格)(空格) 255

    (空格)(空格) f f

    ▲ setprecision用法

    使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。

    如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。

    如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。

    例如,下面的代码分别用浮点、定点和指数方式表示一个实数:

    #include <iostream.h>

    #include <iomanip.h> //要用到格式控制符

    void main()

    {

    double amount = 22.0/7;

    cout <<amount <<endl;

    cout <<setprecision(0) <<amount <<endl

    <<setprecision(1) <<amount <<endl

    <<setprecision(2) <<amount <<endl

    <<setprecision(3) <<amount <<endl

    <<setprecision(4) <<amount <<endl;

    cout <<setiosflags(ios::fixed);

    cout <<setprecision(8) <<amount <<endl;

    cout <<setiosflags(ios::scientific)

    <<amount <<endl;

    cout <<setprecision(6); //重新设置成原默认设置

    }

    运行结果为:

    3.14286

    3

    3

    3.1

    3.14

    3.143

    3.14285714

    3.14285714e+00

    该程序在32位机器上运行通过。

    在用浮点表示的输出中,setprecision(n)表示有效位数。

    第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。

    在用定点表示的输出中,setprecision(n)表示小数位数。

    第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。

    在用指数形式输出时,setprecision(n)表示小数位数。

    第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8

    setw(n)是设置域宽。

    就是你的输出要占多少个字符

    比如:

    cout<<setw(5)<<12345<<endl;

    就输出

    12345

    cout<<setw(6)<<12345<<endl;

    输出

    12345

    而如果你要输出的字符宽度超出了setw(n)的n值,就按输出字符的宽度输出。

    如你的cout<<setw(4)<<12.3456<<endl;

    就输出12.3456

    I/O流常用控制符:

    使用控制符时,在程序开头加投文件#include <iomanip>

    C++有两种方法控制格式输出:1、用格式控制符;2、用流对象的成员函数

    格式控制符:

    dec                                设置基数为10

    hex                                设置基数为16

    oct                                设置基数为8

    setfill(c)                         设置填充字符c

    setprecision(n)                    设置显示小数精度为n位

    setw(n)                               设置域宽为n个字符

    setiosflags(ios::fixed)                     固定的浮点显示

    setiosflags(ios::scientific)                 指数表示

    setiosflags(ios::left)                  左对齐

    setiosflags(ios::right)                 右对齐

    setiosflags(ios::skipws)               忽略前导空白

    setiosflags(ios::uppercase)             16进制数大写输出

    setiosflags(ios::lowercase)             16进制小写输出

    成员函数:

    flags(10)                           设置基数为10

    flags(16)                           设置基数为16

    flags(8)                            设置基数为8

    flags(c)                            设置填充字符c

    precision(n)                        设置显示小数精度为n位

    width(n)                            设置域宽为n个字符

    控制符和流成员函数相对应,它们用法不同,但是作用相同。

    注意!!:setw(n)和width(n)是不持续的。即它们只作用于与它后面相邻的域或对象,在下一个域或对象时就回到原来的默认值。


  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/juechen/p/4722041.html
Copyright © 2011-2022 走看看