- 鐵幣
- 3003 元
- 文章
- 1434 篇
- 聲望
- 735 枚
- 上次登入
- 10-3-28
- 精華
- 0
- 註冊時間
- 06-9-29
- UID
- 314768
|
原文由magicalloveshe 於 07-7-5 01:15 AM 發表
long -2147483648~2147483647
float -3.4+10^38~3.4+10^38
這兩種型態宣告都是佔4bytes
為什麼範圍差那麼多?
float的數字範圍比long多上幾乎10^28這麼多倍耶!
這種問題有解嗎?
還是只能告訴自己...這是規定...0.0 ...
這是規定!
long算是整數的一種,長整數.在怎麼樣也無法表示像有小數(1.1或1.23)的這些實數 (這受限於表示式或公式的制定)
而float是由 sign(符號,可表正負數...這裡和一般整數一樣,只佔1bits 0 or 1) exponent(指數) 和 mantissa(尾數)所組成 用來表示實數(real number)
制定方式有一定標準,不同標準的浮點數所表示的值也不一樣(可查其中一種IEEE754規格看看)
而float以有限欄位去表示整個實數系,當然會有誤差發生,這就不用提,就跟long以有限欄位表現整數一樣(無法完全表示)
而float公式大概是 (-1)^(sign)*(1.尾數)*2^(指數-127) (這公式我有點忘了,不過大概像這樣)
如果 sign=1 尾數=0 指數=0 -1*2^(-127)=-2^-127 當然比long還大 , 因為long是-2^31~2^31-1
另外float還可表示infinite -infinite 和 NaN
所以這都是設計上面的問題造成
[ 本文最後由 turnX 於 07-7-12 08:55 PM 編輯 ] |
|