C++中如何精确地输出特定类型的位数

precision()函数和fixed合用的方法。

其中,fixed表示使用一般的方法(不是科学计数法之类的)输出浮点数。
precision是cout自定义的函数,用来设置小数输出位数的精度。
注意:如果precision函数没有配合fixed使用的话,它表示的精度就包括了小数的位数。

double pai = 3.1415926535;
cout.precision(5);
cout<<pai<<endl; //3.1416
cout<<fixed<<pai<<endl; //3.14159

使用setprecision()格式控制符。

使用setprecision格式控制符,就要声明头文件#include<iomanip>
setprecision(n)设置精度,其中n表示输出n位。

double pai = 3.1415926535;
cout<<setprecision(5)<<pai<<endl; //3.1416
cout<<fixed<<setprecision(5)<<pai<<endl; //3.14159

使用setw(n)和setfill()。

setw(n)表示输出n个长度的字段。
setw()函数只对紧接着的输出产生作用,当后面紧跟着的输出字段长度小于n时,在该字段前面用空格补齐,当输出字段长度大于n时,全部整体输出。
setw()不仅可以输出数字,也可以输出字符串等类型的数据。
setw() 默认填充的内容为空格,可以 setfill() 配合使用设置其他字符填充。

double pai = 3.1415;
cout<<setw(8)<<pai<<endl; // 3.1415
cout<<setw(8)<<setfill('*')<<pai<<endl; //**3.1415
当然,C++兼容C语言,可以用C语言中的方法设置精度。

printf(“格式控制字符串”,输出表列)。

格式控制字符串 为 %- 0 m.n l/h 格式字符
% 为格式说明的引导符号,- 为指定左对齐输出,0 为 指定空位填0,m.n 指定输出域宽及精度,即m为输出总位数,n为小数点后位数,l/h 输出长度的修正,格式字符为指定输出的数据类型。

double pai = 3.1415926535;
printf("%.4lf\n",pai);
printf("%8.4lf\n",pai);
printf("%-8.4lf\n",pai);
printf("%08.4lf\n",pai);

执行结果:

printf是格式化输出函数,它可以直接打印十进制,八进制,十六进制,输出控制符分别为%d, %o, %x, 但是它不存在二进制,如果输出二进制可以调用stdlib.h里面的itoa函数。
itoa函数原型为char*iota(int value,char *string,int radix);value为被转化的整数,string为转换后储存的字符数组,radix为要转换的进制数

#include<cstdio>
#include<cstring>
#include<cstdlib>//注意。itoa函数要包含这个头文件
using namespace std;
int main()
{
int a=12;
printf("八进制 %o\n",a);
printf("十六进制 %x\n",a);
printf("十进制 %d\n",a);
char s[40];//要转换成的字符数组
itoa(a,s,2);//itoa转为二进制
printf("二进制 %s\n",s);//s就是你转换成的数组
itoa(a,s,3);//转为三进制
printf("三进制 %s\n",s);
return 0;
}

参考:https://blog.csdn.net/qq_34261446/article/details/101610892

在c/c++系统中除了标准的输入输出外,还提供了更多的输入函数。
这写函数主要有getch(),getche(), getchar (),cin.get(),putch(),putchar(),cout.put(),gets(),cin.getline(),puts()。

另外 还有些为了让缓冲区不影响程序的正确操作的缓冲去的操作,如:cin.putback(),fflush(stdin),cout.flush().我们 做一下简单的说明。

1、getch()和getche(),非缓冲式输入,从键盘读入一个字符。getch()读入字符不显示。有conio.h支持。

2、cin.get(),getchar(),缓冲式输入,从键盘读入一个字符,并显示。getchar()由stdio.h支持,cin.get()由iostream.h支持。

3、putch()和putchar(),非缓冲式输出,输出一个字符到显示器。putch()由conio.h支持,putchar()由stdio.h支持。

4、cout.put(),缓冲式输出,输出一个字符到显示器。由iostream.h支持。

5、gets()和cin.geline(),缓冲式输入,读入一字符串(包括空格,不包括最后的回车),gets()由stdio.h支持,cin.getline()由iostream.h支持。

6、puts(),非缓冲输出,输出一个字符串,由stdio.h支持。

7、cin.putback(),把一个字符送回输入缓冲区。

8、fflush(stdin),清除输入缓冲区操作。无法清除cin.get()等带来的操作。

9、cout.flush(),清楚输出缓冲区。 在这里我们稍微说一下输入/输出缓冲区,这是为了减少程序访问io带来中断而设的一段空间。当程序满足某个刷新条件时,那就将清理缓冲区。具体条件为:

 

上一篇:笨办法学Python记录--习题18 变量 函数 help的由来;if语句,循环和列表,冒泡排序,判断输入字符串的方法


下一篇:达梦数据库-disql工具实现基于操作系统的身份验证