当前位置:网站首页>C语言日记 5、7setprecision()问题
C语言日记 5、7setprecision()问题
2022-08-02 14:03:00 【宇 -Yu】
例 2-13:
#include <iostream>
#include <iomanip>
//io:输入输出 manip:manipulator(操纵器)的缩写
//(在c++上只能通过输入缩写才有效)只要对I/O进行格式控制,就必须要写
//具体详情,见:iomanip解释_码里奥特慢的博客-CSDN博客_iomanip
using namespace std;
int main()
{
double x = 1.23456789;
cout << x << endl;
//从这里我们可以发现,默认的有效数字个数为6位
//并且,该操作符运算遵循四舍五入法则
//[改成(float x = 1.23456789;)运行结果也一样]
cout << setprecision(3) << x << endl;
//该操作符运算遵循四舍五入法则。代入:
//cout << setprecision(4) << x << endl;
//即可验证
cout << setprecision(12) << x << endl;
//从这里我们可以发现
// 如果操作符规定的有效数字个数大于给出实数最大精度的话
// 就输出最大精度的实数,不用后面加零,也不用四舍五入。
return 0;
}

有效数字:
在一个数中,从该数的第一个非零数字起,直到末尾数字止的数字称为有效数字。
precise:准确的;精确的;
precision:精确(度);
另外,如果后面不重新定义对有效数字个数的规定,那么后面语句将一直遵循上一个定义有效数字个数的标准。例:
#include <iostream>
#include <iomanip>
//io:输入输出 manip:manipulator(操纵器)的缩写
//(在c++上只能通过输入缩写才有效)只要对I/O进行格式控制,就必须要写
//具体详情,见:iomanip解释_码里奥特慢的博客-CSDN博客_iomanip
using namespace std;
int main()
{
double x = 1.23456789, y = 4.5647687;
cout<< x << endl;
cout << setprecision(3) << x << endl;
cout << y<< endl;
return 0;
}
结合前面C语言日记 5 运算符和表达式(含类型转换(例2-6))中:
#include <iostream>
#include<iomanip>
using namespace std;
void main()
{
int a, b = 322;//整型
float x, y = 8.88;//浮点型,即实(数)型
char cl = 'k', c2;//字符型
a = y; //实型转整型,a=8
x = b;//整型转实型,x=322.0
a = cl;//字符型转整型,把字符k对应的ASCII码数值ASC(k)=107赋给a,a=107
c2 = b;//整型转字符型
//把数字322对应二进制数(101000010)低八位(01000010)作为ASCII码数值(66)
//把ASCII码数值(66)对应的字符Char(66)=B赋给c2
cout << a << "," << x << "," << a << "," << c2 << endl;
}

实数后面的小数点不显示。
利用我们这里学的setprecision()进行修改:
#include <iostream>
#include<iomanip>
using namespace std;
void main()
{
int a, b = 322;//整型
float x, y = 8.88;//浮点型,即实(数)型
char cl = 'k', c2;//字符型
a = y; //实型转整型,a=8
x = b;//整型转实型,x=322.0
a = cl;//频率字符型转整型,把字符k对应的ASCII码数值ASC(k)=107赋给a,a=107
c2 = b;//整型转字符型,把数字322对应二进制数(101000010)低八位(01000010)作为ASCII码数值(66),把ASCII码数值(66)对应的字符Char(66)=B赋给c2
cout << a << ",";
cout << setprecision(5) << x;
cout << "," << c2 << endl;
}
实数输出形式依然无改变,不是322.00

即使把两句都加上setprecision()也没用:
#include <iostream>
#include<iomanip>
using namespace std;
void main()
{
int a, b = 322;//整型
float x, y = 8.88;//浮点型,即实(数)型
char cl = 'k', c2;//字符型
a = y; //实型转整型,a=8
x = b;//整型转实型,x=322.0
a = cl;//频率字符型转整型,把字符k对应的ASCII码数值ASC(k)=107赋给a,a=107
c2 = b;//整型转字符型,把数字322对应二进制数(101000010)低八位(01000010)作为ASCII码数值(66),把ASCII码数值(66)对应的字符Char(66)=B赋给c2
cout << setprecision(5) << a << ",";
cout << setprecision(5) << x;
cout << "," << c2 << endl;
}
你奶奶的,怎么办?
边栏推荐
猜你喜欢

C语言一级指针(补)
CMakeLists.txt详解](/img/34/577c729f06748f625ca0c223496d48.png)
[ROS](03)CMakeLists.txt详解

redis延时队列

8581 Linear linked list inversion

Creating seven NiuYun Flask project complete and let cloud

The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration

yolov5 improvement (1) Add attention focus mechanism

Unit 15 Paging, Filtering

8580 Merge linked list

The specific operation process of cloud GPU (Hengyuan cloud) training
随机推荐
Flask框架深入一
MobileNet ShuffleNet & yolov5替换backbone
【c】小游戏---扫雷雏形
8581 Linear linked list inversion
第十一单元 序列化器
C语言一级指针(补)
Flask-SQLAlchemy
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十章)
redis分布式锁和看门狗的实现
The language of initial
Briefly write about the use and experience of PPOCRLabel
Implementation of redis distributed lock and watchdog
run yolov5
瑞吉外卖笔记——第05讲Redis入门
[ROS]ROS常用工具介绍(待续)
深度学习框架pytorch快速开发与实战chapter4
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十一章)
Flask上下文,蓝图和Flask-RESTful
chapter6可视化(不想看版)
第七单元 ORM表关系及操作