1
我写了下面的程序:为什么两次连续铸造改变一个整数?
#include <iostream>
int main()
{
int i =123456789;
float f=i;
int j=f;
std::cout<<"j-i ="<<j-i;
}
据我们所知,浮点数在存储器中具有至少4个字节长度。和123456789
十进制等于0x75BCD15
十六进制,这是小于4个字节。所以我为什么当我运行上述程序时,输出不是0
?
[email protected]:~$ ./a.out
j-i = 3
'float数字至少有4个字节长度吗?我不认为这个标准确实如此 - 像往常一样。 – ikh
仅仅因为sizeof(float)== sizeof(int)'并不意味着它们在精度等问题上是相等的。您可能需要阅读[IEEE浮点格式](http://en.wikipedia.org/wiki/IEEE_floating_point#Formats),这是计算机上浮点值最常用的格式。 –
一个简单的,但足够好的,最重要的可访问的浮点数介绍是[Barteks介绍浮点数](http://2013.jsconf.eu/speakers/bartek-szopka-everything-you-never-wanted了解JavaScript的数字和你没有知道你可以ask.html)在jsconf谈话。它实际上覆盖了JS,但99%的谈话是关于浮点数的标准,因此与其相关。 –