C++ 变量类型 - 值

标签 c++ variables types

我是初学者,但我认为同样重要的是我认为我应该尽快学习。 所以我有一个代码:

float fl=8.28888888888888888888883E-5;
cout<<"The value = "<<fl<<endl;

但是运行后我的.exe文件显示:

8.2888887845911086e-005

我怀疑要限制类型和其余部分的数字将是零,但我看到数字是随机的。也许它在变量之后从内存中给出数字? 你能解释一下它是如何工作的吗?

最佳答案

I suspected the numbers to limit of the type and rest will be the zero

是的,这正是发生的事情,但它以二进制形式发生。此程序将使用十六进制打印格式显示它 %a:

#include <stdio.h>

int main(int c, char *v[]) {
  float fl = 8.28888888888888888888883E-5;

  printf("%a\n%a\n", 8.28888888888888888888883E-5, fl);
}

显示:

0x1.5ba94449649e2p-14
0x1.5ba944p-14

在这些结果中,0x1.5ba94449649e2p-14 是最接近 8.28888888888888888888883*10-5double 的十六进制表示,并且 0x1.5ba944p-14 是该数字转换为 float 的表示。如您所见,转换只是截断了最后一位数字(在这种情况下。转换是根据舍入模式完成的,当舍入向上而不是向下时,它会更改最后一位或多位数字)。

当您观察decimal 中发生的情况时,floatdoublebinary float 这一事实您计算机上的格式意味着在值的表示中有额外的数字。

关于C++ 变量类型 - 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34049902/

相关文章:

c++ - 使用光滑粒子流体动力学的流体模拟

c# - 变量在其他上下文中为空 C# Windows 窗体

variables - 动态 Freemarker 变量名

haskell - 与 TypeApplications 一起使用时,AllowAmbigouslyTypes 有多危险?

c++ - 是否可以检测绑定(bind)成员函数引用的对象是否被删除或销毁

C++:如何专门针对左值和右值

c++ - 多态继承不覆盖基类方法

perl - 尝试通过 Perl 中的词法绑定(bind)本地化外部包变量

c++ - 什么是 16 字节有符号整数数据类型?”

c# - 如何获取操作系统名称