C/C++保留小数位数

C++

单纯setprecison函数仅控制输出位数

看例子

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    float number1 = 132.364, number2 = 26.91;
    float quotient = number1 / number2;
    cout << quotient << endl;
    cout << setprecision(5) << quotient << endl;
    cout << setprecision(4) << quotient << endl;
    cout << setprecision(3) << quotient << endl;
    cout << setprecision(2) << quotient << endl;
    cout << setprecision(1) << quotient << endl;*/
    double dollars = 24.51;
	cout << dollars << endl;  // 显示 24.51
	cout << setprecision (5) << dollars << endl; // 显示 24.51
    return 0;
}

需注意以下

  • setprecison(n)设置精度函数,一次对后面所有数字均有效,除非后面再次设置才会更改
  • 单纯的输入setprecison包括小数和整数部分一共的位数
  • 头文件加上#include<iomanip>

控制小数

在cout语句后加入fixed(个人习惯简单)其他三种也可以

//第一种写法
	cout<<setiosflags(ios::fixed)<<setprecision(2);	
//第二种写法
	cout.setf(ios::fixed);
	cout<<setprecision(2);
//第三种写法
cout<<fixed<<setprecision(2);
  • 保留几位小数setprecison(n)n就写多少
  • 同样一次使用对后续都有效
 #include<iostream>
#include<iomanip> 
using namespace std;
int main(void) 
{
	float a=3.1415926;
	float b=3.13434343;
	float c=4.6557646; 
	cout<<a<<endl; //编译器默认6位有效数字,不同编译器可能不同
	cout<<fixed<<setprecision(4)<<a<<endl;//仅输出四位小数
	cout<<b<<endl;//同时b也会受到上面一行代码的影响
	cout<<setprecision(6)<<c<<endl;//重新设置成6 位
	
}
  • 请注意最后小数位数设置为6时使用setprecision函数而c中小数第6位将进行四舍五入

C语言

解析语法

  • 1.若跟的是f或lf,即是%7.2f或%7.2lf,输出7位对应的浮点数,小数点后取2位,不足用0补齐 右对齐。若对应的浮点数超过了7位则按实际位数输出。
  • 2.需要注意的是小数点也属于1个宽度
  • 3.同样保留几位数后面仍然数字依旧会四舍五入
#include<stdio.h>
int main ()
{
float a=5.1523;
float b=6.3;
float c=5.1565;
printf("%7.2f\n",a);
printf("%6.2f\n",b);
printf("%6.2f\n",c);
return 0;
}

2.若跟的是s,即%7.2s,则指示输出函数输出与之对应的字符串,取字符串前2位占宽7位右对齐。

#include <stdio.h> 
int main()
{
	printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA","CHINA","CHINA","CHINA"); 
	return 0;
}

%3s, 格式输出字符串,右对齐,超出3个长度的,就全部输出;
%7.2s, 输出字符串占7个位置,右对齐,左补空格,输出2个字符;
%.4s, 仅输出4个字符,占位4个位置,右对齐;
%-5.3s: 输出3个字符,占位5个位置,左对齐右补空格。

原创文章 7 获赞 10 访问量 266

猜你喜欢

转载自blog.csdn.net/lpblog/article/details/105886550