C++prime笔记

有效数字
在学习有效数字时没有搞清楚为什么在cout输出时不管哪个类型都是6位有效数字,今天终于搞清楚。
在《C++Prime》第30页中标注如下:
float 6位有效数字
double 10位有效数字
long double 10位有效数字
但是当写入代码如下时:

#include<iostream>
using namespace std;
int main(){
float s=1.12345678910111213141516;
double a=1.12345678910111213141516;
long double c=1.12345678910111213141516;
cout<<s<<endl;
cout<<a<<endl;
cout<<c<<endl;
}

输出结果为:
在这里插入图片描述

原因在cout输出时只能输出6位有效数字,下面看这段代码:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
float s=1.12345678910111213141516;
double a=1.12345678910111213141516;
long double c=1.12345678910111213141516;
cout << setprecision(20)<< s << endl;
cout << setprecision(20)<< a << endl;
cout << setprecision(20)<< c << endl;
}

输出结果为:
在这里插入图片描述

可以看到最后的有效数字float超过6位,double与long double都超过了10位,所以c++prime上注明的有效数字位数实际上可以理解为最少的位数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值