Discussion:
有關float....
(时间太久无法回复)
小安
2006-10-15 16:12:18 UTC
Permalink
【 在 ***@bbs.ee.ncku.edu.tw (kimi) 的大作中提到: 】
: 請問float不是用來宣告浮點型變數的嗎?(大一)
: 為什麼我打
: float a=-2.2
: 結果就error
: 打
: float a=2
: 結果就對?

因為 Java 中的 浮點數 literal 都是 double
整數則是 int,因此 float a=2,這個 2 可以 implicitly casting 成 float

而第一個例子則必須要手動轉型,或著這樣宣告 float a=-2.2f;

: 還有...書上說float 用4 bytes去儲存..可顯示範圍為:
: -3.40282347*e+48~-1.40239846*e-45
: Q1:為什麼範圍是負的到負的?
: Q2:這是怎麼算的?(跟int的算法好像不同)

我想應該是 -3.40282347*e+48 ~ -1.40239846*e-45
和 1.40239846*e-45 ~ 3.40282347*e+48

至於怎麼算..如果了解 IEEE 754 的定義
應該就可以算得出來了

簡單的說正數的最小值就是 mantissa 都設成 0,exponment 也設為最小
懂得原理的話最大值 or 負數的範圍也都算得出來
--
NPDA - Non-deterministic PushDown Automata
(不確定是否推倒自動機)
DPDA - Deterministic PushDown Automata
(確定會推倒自動機)

得証: DPDA 效率比較高

※ 來源:‧資訊傳奇 inf.csie.thu.edu.tw‧[FROM: 59-126-173-31.HINET-IP.hinet.n]
痞子軍團團長
2006-10-15 10:57:46 UTC
Permalink
※ 引述《***@inf.csie.thu.edu.tw (小安)》之銘言:
: 【 在 ***@bbs.ee.ncku.edu.tw (kimi) 的大作中提到: 】
: : 還有...書上說float 用4 bytes去儲存..可顯示範圍為:
: : -3.40282347*e+48~-1.40239846*e-45
: : Q1:為什麼範圍是負的到負的?
: : Q2:這是怎麼算的?(跟int的算法好像不同)
: 我想應該是 -3.40282347*e+48 ~ -1.40239846*e-45
: 和 1.40239846*e-45 ~ 3.40282347*e+48
: 至於怎麼算..如果了解 IEEE 754 的定義
: 應該就可以算得出來了
: 簡單的說正數的最小值就是 mantissa 都設成 0,exponment 也設為最小
: 懂得原理的話最大值 or 負數的範圍也都算得出來

順帶補個容易忽略的重點
這裡雖然用 數值 A ~ 數值 B

但是,並不是數值 A ~ 數值 B 這個閉區間的所有實數都可以表示
電腦當中的數線是不連續的...


====
不過,已經快離開 Java 的範圍了.... @___@

--
 侃侃長論鮮窒礙  網站:http://www.psmonkey.idv.tw
 眾目睽睽無心顫  個人版:telnet://legend.twbbs.org
 煢居少聊常人事 
 殺頭容易告白難  歡迎參觀 Java 版(@ptt.cc)精華區 \囧/

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.197.180

继续阅读narkive:
Loading...