c++浮点数的一些知识

整数是很棒的计数整数,但有时我们需要存储非常大的数字,或数字与小数部分。一个浮点类型变量是一个变量,该变量可以保存一个实数,如4.0,2.5,3.33,0.1226。有三种不同的浮点数据类型:浮子,双,和长双。通常是4字节浮点数和双8字节,但这些都不是严格的要求,所以大小可能会有所不同。长双打被添加到语言后释放的架构,支持更大的浮点数。但通常情况下,他们也8个字节,相当于一个双。浮点数据类型总是签署(可以持有正面和负面的价值)。

这里有一些声明的浮点数:

float fValue;
double dValue;
long double dValue2;

漂浮的名字的一部分浮点指,一个浮点数可以有一个可变数目的小数位。例如,2.5有1位小数,而0.1226有4位小数。
当我们分配数字,浮点数,这是约定使用至少一个小数位。这有助于区分浮点值的整数值。
int nValue = 5; // 5 means integer
float fValue = 5.0; // 5.0 means floating point


浮点变量如何存储信息超出了本教程的范围,但是它非常类似于数字是用科学记数法。科学记数法是一种有用的速记写冗长的数字在一个简洁的方式。用科学记数法,一个号码有两个部分:有效数字,和一个功率10称为指数。字母“e”或“e”是用来分离两部分。因此,一个数字,例如5 e2相当于5 * 10 ^ 2,或500。5号的飞行相当于5 * 10 ^ 2或0.05。
事实上,我们可以用科学记数法赋值浮点变量。
double dValue1 = 500.0;
double dValue2 = 5e2; // another way to assign 500
 
double dValue3 = 0.05;
double dValue4 = 5e-2; // another way to assign 0.05


此外,如果我们输出一个数字,足够大,或者有足够的小数点后,它将被打印在科学记数法:
#include <iostream>
int main()
{
    using namespace std;
 
    double dValue = 1000000.0;
    cout << dValue << endl;
    dValue = 0.00001;
    cout << dValue << endl;
    return 0;
}


输出:
1 e + 006
1 e - 005
精密
考虑到部分1/3。小数的表示这个数字是0.33333333333333和3′年代…出去到无穷大。一个无限长度号码需要无限的记忆,和我们通常只有4或8个字节。浮点数只能存储一定数量的位数,其余的都是失去了。精度的一个浮点数是多少位数它可以代表没有信息损失。
当输出浮点数,cout有一个默认的精度,6 -它假设所有变量都是显著的,只有6位数,因此它将截断后的内容,。
下面的程序显示6位数cout主题:
#include <iostream>
int main()
{
    using namespace std;
    float fValue;
    fValue = 1.222222222222222f;
    cout << fValue << endl;
    fValue = 111.22222222222222f;
    cout << fValue << endl;
    fValue = 111111.222222222222f;
    cout << fValue << endl;
}


这个程序的输出结果:
1.22222
111.222
111111年
请注意,这些都是只有6位数。
然而,我们可以覆盖默认的精度,通过设置精度cout显示()函数,定义在一个头文件称为iomanip。
#include <iostream>
#include <iomanip> // for setprecision()
int main()
{
    using namespace std;
 
    cout << setprecision(16); // show 16 digits
    float fValue = 3.33333333333333333333333333333333333333f;
    cout << fValue << endl;
    double dValue = 3.3333333333333333333333333333333333333;
    cout << dValue << endl;


输出:
3.333333253860474
3.333333333333334
因为我们设置精度16位数,上述每个数字16位数。但是,正如你所看到的,这些数字并不准确的16位数!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值