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%的談話是關於浮點數的標準,因此與其相關。 –