float大小對股票影響
㈠ 求大神解答。。指數超過100,超過了float數據的最大范圍,但是為什麼我編寫的編程還能算出來,哪裡錯了嗎
float的范圍為-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范圍為-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
這本來就沒有超過float的最大范圍。
范圍
float和double的范圍是由指數的位數來決定的。
float的指數位有8位,而double的指數位有11位,分布如下:
float:
1bit(符號位) 8bits(指數位) 23bits(尾數位)
double:
1bit(符號位) 11bits(指數位) 52bits(尾數位)
於是,float的指數范圍為-127~+128,而double的指數范圍為-1023~+1024,並且指數位是按補碼的形式來劃分的。
其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值范圍。
2. 精度
float和double的精度是由尾數的位數來決定的。浮點數在內存中是按科學計數法來存儲的,其整數部分始終是一個隱含著的「1」,由於它是不變的,故不能對精度造成影響。
float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。
㈡ 浮點數問題
樓主的問題應該是浮點數在內存中的存儲,浮點數有float和double兩種。你耐心看看下面的解釋就懂了。
任何數據在內存中都是以二進制的形式存儲的,例如一個short型數據1156,其二進製表示形式為00000100 10000100。則在Intel CPU架構的系統中,存放方式為 10000100(低地址單元) 00000100(高地址單元),因為Intel CPU的架構是小端模式。但是對於浮點數在內存是如何存儲的?目前所有的C/C++編譯器都是採用IEEE所制定的標准浮點格式,即二進制科學表示法。
在二進制科學表示法中,S=M*2^N 主要由三部分構成:符號位+階碼(N)+尾數(M)。對於float型數據,其二進制有32位,其中符號位1位,階碼8位,尾數23位;對於double型數據,其二進制為64位,符號位1位,階碼11位,尾數52位。
31 30-23 22-0
float 符號位 階碼 尾數
63 62-52 51-0
double 符號位 階碼 尾數
符號位:0表示正,1表示負
階碼:這里階碼採用移碼表示,對於float型數據其規定偏置量為127,階碼有正有負,對於8位二進制,則其表示範圍為-128-127,double型規定為1023,其表示範圍為-1024-1023。比如對於float型數據,若階碼的真實值為2,則加上127後為129,其階碼表示形式為10000010
尾數:有效數字位,即部分二進制位(小數點後面的二進制位),因為規定M的整數部分恆為1,所以這個1就不進行存儲了。
下面舉例說明:
float型數據125.5轉換為標准浮點格式
125二進製表示形式為1111101,小數部分表示為二進制為 1,則125.5二進製表示為1111101.1,由於規定尾數的整數部分恆為1,則表示為1.1111011*2^6,階碼為6,加上127為133,則表示為10000101,而對於尾數將整數部分1去掉,為1111011,在其後面補0使其位數達到23位,則為11110110000000000000000
則其二進製表示形式為
0 10000101 11110110000000000000000,則在內存中存放方式為:
00000000 低地址
00000000
11111011
01000010 高地址
而反過來若要根據二進制形式求算浮點數如0 10000101 11110110000000000000000
由於符號為為0,則為正數。階碼為133-127=6,尾數為11110110000000000000000,則其真實尾數為1.1111011。所以其大小為
1.1111011*2^6,將小數點右移6位,得到1111101.1,而1111101的十進制為125,0.1的十進制為1*2^(-1)=0.5,所以其大小為125.5。
同理若將float型數據0.5轉換為二進制形式
0.5的二進制形式為0.1,由於規定正數部分必須為1,將小數點右移1位,則為1.0*2^(-1),其階碼為-1+127=126,表示為01111110,而尾數1.0去掉整數部分為0,補齊0到23位00000000000000000000000,則其二進製表示形式為
0 01111110 00000000000000000000000
由上分析可知float型數據最大表示範圍為1.11111111111111111111111*2^127=3.4*10^38
對於double型數據情況類似,只不過其階碼為11位,偏置量為1023,尾數為52位
㈢ Float代表什麼
float[英][fləʊt][美][floʊt]
vt.& vi.(使)浮動; (使)漂浮; 自由浮動;
vi.游盪;
vt.提出,提請考慮; (股票)上市;
n.彩車; 漂浮物; 浮板; 浮有冰淇淋的飲料;
㈣ float 的指數取值范圍
float和double的范圍是由指數的位數來決定的。
float的指數位有8位,而double的指數位有11位,分布如下:
float:
1bit(符號位) 8bits(指數位) 23bits(尾數位)
double:
1bit(符號位) 11bits(指數位) 52bits(尾數位)
於是,float的指數范圍為-127~+128,而double的指數范圍為-1023~+1024,並且指數位是按補碼的形式來劃分的。
其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值范圍。
float的范圍為-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范圍為-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
(4)float大小對股票影響擴展閱讀:
浮點變數由尾數(包含數字的值)和指數(包含數字的數量級)表示。
下表顯示了分配給每個浮點類型的尾數和指數的位數。任何 float 或 double 的最高有效位始終是符號位。如果符號位為 1,則將數字視為負數;否則,將數字視為正數。
浮點變數由尾數(包含數字的值)和指數(包含數字的數量級)表示。
下表顯示了分配給每個浮點類型的尾數和指數的位數。任何 float 或 double 的最高有效位始終是符號位。如果符號位為 1,則將數字視為負數;否則,將數字視為正數。
由於指數是以無符號形式存儲的,因此指數的偏差為其可能值的一半。對於 float 類型,偏差為 127;對於 double 類型,偏差為 1023。您可以通過將指數值減去偏差值來計算實際指數值。
存儲為二進制分數的尾數大於或等於 1 且小於 2。對於 float 和 double 類型,最高有效位位置的尾數中有一個隱含的前導 1,這樣,尾數實際上分別為 24 和 53 位長,即使最高有效位從未存儲在內存中也是如此。
浮點包可以將二進制浮點數存儲為非標准化數,而不使用剛剛介紹的存儲方法。「非標准化數」是帶有保留指數值的非零浮點數,其中尾數的最高有效位為 0。通過使用非標准化格式,浮點數的范圍可以擴展,但會失去精度。您無法控制浮點數以標准化形式還是非標准化形式表示;浮點包決定了表示形式。浮點包從不使用非標准化形式,除非指數變為小於可以標准化形式表示的最小值。
參考資料:FLOAT——網路
㈤ int與float的大小是如何定義的
Int和Float取值范圍取決於所使用的機器。對於Int類型,16位gnu編譯器的取值范圍是16位(-32768-32768),32位和64位gnu編譯器取值范圍是32位(取值范圍是ox80000000-oxFFFFFFFF).對於Float類型,一般是32位,它的有效數字是6-7位,取值范圍是3.4*10(-38)-3.4*10(38)
㈥ Float代表什麼
同學你好,很高興為您解答!
Float公開流通股票由公眾股東持有,在公開市場流通的股票總數。計算方法為已發行股票總數 - 有限制股票。
對於各個投資領域內的專業人員,包括基金經理、證券分析師、財務總監、投資顧問、投資銀行家、交易員等等,CFA非常重要;它直接證明了你的職業素養和能力,被投資業看成一個「黃金標准」,這一資格被認為是投資業界中具有專業技能和職業操守的承諾。考生考過CFA對自己將會有很大幫助。
希望高頓網校的回答能幫助您解決問題,更多財會問題歡迎提交給高頓企業知道。
高頓祝您生活愉快!
㈦ float疑惑
首先說一下:
范圍是3.4E-38 ——3.4E+38,可提供7位有效數字。
上述這兩個量都是近似值,各個編譯器不太一樣的。
下面我就將標准值是怎麼定義的,和你說一下:
這個比較復雜,建議你找一下IEEE754標准看一下。
這個簡單說一下吧:
在IEEE754標准中進行了單精度浮點數(float)和雙精度數浮點數(double)的定義。float有32bit,double有64bit。它們的構成包括符號位、指數位和尾數位。
這些位的構成如下:
種類-------符號位-------------指數位----------------尾數位----
float---第31位(佔1bit)---第30-23位(佔8bit)----第22-0位(佔23bit)
double--第63位(佔1bit)---第62-52位(佔11bit)---第51-0位(佔52bit)
取值范圍主要看指數部分:
float的指數部分有8bit(2^8),由於是有符號型,所以得到對應的指數范圍-128~128。
double的指數部分有11bit(2^11),由於是有符號型,所以得到對應的指數范圍-1024~1024。
由於float的指數部分對應的指數范圍為-128~128,所以取值范圍為:
-2^128到2^128,約等於-3.4E38 — +3.4E38
精度(有效數字)主要看尾數位:
float的尾數位是23bit,對應7~8位十進制數,所以有效數字有的編譯器是7位,也有的是8位
說的通俗一點,float佔了32位,計算機把其中的8個來存儲指數,1個存儲符號(該數是+還是-),其餘給尾數。8個存儲指數的范圍是-2^128到2^128,約等於-3.4E38 — +3.4E38
㈧ float對塊有什麼影響
設了float:left的元素允許它的右邊存在任何元素同行顯示,不論是內聯元素還是塊元素。但它的左邊還是不允許存在任何元素與之同行顯示,哪怕其它的元素的代碼在前,除非也給前面的元素加上float:left後,才允許同行顯示。 設了display:inline的元素,允許它的前後存在其它的內聯元素同行顯示。關於代碼在其前面的塊元素之同行顯示,則要讓前面的元素浮動(不管是左還是右浮動)或設為display:inline,還有代碼在後面的是塊元素(管它有沒有浮動,是左浮動還是右浮動),均不能與之同行,除非設為display:inline。 另外,給塊級元素設上display:inline是解決有名的IE6中雙倍浮動的利器。
㈨ float究竟是怎麼評價大小的
float 類型不能比較相等或不等,但可以比較>,<,>=,<=
用==從語法上說沒錯,但是本來應該相等的兩個浮點數由於計算機內部表示的原因可能略有微小的誤差,這時用==就會認為它們不等。應該使用兩個浮點數之間的差異的絕對值小於某個可以接受的值來判斷判斷它們是否相等
㈩ float和double偏移量的問題
指數偏移值(exponent bias),是指浮點數表示法中的指數域的編碼值為指數的實際值加上某個固定的值,IEEE 754 國際標准規定該固定值為 2 的 (e−1)次方減 1 其中的e 為存儲指數的 位元 的 長度 (即有幾個 bit) 。
單精度浮點數,即float型,指數域是8個位元,固定偏移值是2 的 (8−1)次方減 1, 就是 2的七次方減1,等於 127。
double指數域是11個位元, 固定偏移值是2 的 (11−1)次方減 1, 就是 2的十次方減1,等於 1023。
出現128 或 1024 時,表示出現了 正無窮 或 負無窮 或 NaN(非數)。
詳見 IEEE-754 浮點數國際標准。