係統粉 > 電腦問答 > 其他問答

已解決求助:變量轉換

提問者:很純潔嘛  |  瀏覽次  |  提問時間:2017-02-10  |  回答數量:9

求助:變量轉換double db = (double)(5/2);System.out.println(db);複製代碼結果:2請問如何理解這個轉換過程,謝謝!

已有9條答案
墨焱峰

墨焱峰

回答數:75  |  被采納數:49

說的專業點的話 解釋如下:

Java語言中的float,double類型 都是依照IEEE754標準來進行對數值的轉換的!
至於什麼叫IEEE754標準 這個標準又是什麼樣子的 可以去查下資料 在這就不過多的介紹了!!

此問題 出現的是一個誤區 在java中存在著一種舍入的方式,和我們現實當中的四舍五入不一樣!!
IEEE754標準不支持四舍五入的模式!!隻支持以下幾種舍入模式

1)向最接近的可表示的值;
2)當有兩個最接近的可表示的值時首選“偶數”值;
3)向負無窮大(向 下);
4)向正無窮大(向上)以及向0(截斷)

在java IEEE標準中采取的默認模式是最近舍入方式 對於0.5這樣的數字,采用取偶數的方式

原因是:
由於字長有限,浮點數能夠精確表示的數是有限的,因而也是離散的。在兩個可以精確表示的相鄰浮點數之間,必定存在無窮多實數是IEEE浮點數所無法精確表示的。如何用浮點數表示這些數,IEEE 754的方法是用距離該實數最近的浮點數來近似表示。

對於此問題的 0.5的數字偏向1也不是偏向0也不合適,在計算機內部的運行全都是加法來運行的,乘法 除法 減法 都要轉換成加法來進行運行的,因此就涉及到負數的 原碼、反碼、補碼、移碼
問題,以及涉及到了帶有符號位的二進製計算的問題,此類型在內部都是以補碼的方式進行處理的 而不是以原碼和反碼運行的,因為帶有符號位 計算機處理起來不方便,所以隻能通過補碼的形式來計算
這樣一方麵使符號位能與有效值部分一起參加運算,從而簡化運算規則. 另一方麵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計,具體的可以參考下補碼的轉化過程!
2017-02-10 03:41:12
讚 7
誘嬌跟騰童

誘嬌跟騰童

回答數:160  |  被采納數:92

5/2結果是取整
5除以2商2餘1,取整,當然就得2咯
但是得出的2是int型變量,然後將其強製轉換成double型的
double型與int型的區別就在於內存中所占位數不同,在不超過兩者取值的範圍類,機器顯示出的結果是一樣的,所以你的運行顯示結果就是2(double型)
2017-02-10 04:07:58
讚 16
瘋起來要不得丶

瘋起來要不得丶

回答數:107  |  被采納數:147

結果是 2.0 嗬嗬!!!
2017-02-10 06:31:18
讚 10
愛傲兒

愛傲兒

回答數:0  |  被采納數:150

不是吧?人家給的結果都是2,我解答的沒錯吧?應該沒有誤人子弟吧?
2017-02-10 10:34:40
讚 0
llonwu

llonwu

回答數:113  |  被采納數:23

不相信你自己可以運行下看看
那如果 換成是這樣的話 你覺得又應該輸出什麼值

double db = (double)(5.2/2);
System.out.println(db);

如果按照你的解釋的話 5.2 / 2 是取整數部分 得到個2 輸出double型的2咯
你運行下看看是不是 跟你所想的一樣!
2017-02-10 13:11:09
讚 11
漣璃梔子

漣璃梔子

回答數:52  |  被采納數:59

算了neo_pang 我看出來我錯了,我很慚愧!我沒有運行就發言了,樓主,對不起!另外樓主你也誤導了我,你不應該說輸出的是2,我想當然的認為你說的是正確的了。
2017-02-10 04:48:30
讚 5
會開花的樹小艾

會開花的樹小艾

回答數:6  |  被采納數:147

那你又認為 如何去解答這個問題!!
我隻知道是內部中 帶二進製的數值 轉換成補碼 運行而執行出的返回值!
根據IEEE標準的默認舍取方式 最終出現的2.0結果!!
更詳細的原理解釋 我不是很清楚 你能告訴我下嗎!
2017-02-10 18:35:54
讚 0
殘jz

殘jz

回答數:120  |  被采納數:121

回7樓:我更不清楚!你太謙虛了,不過我可以給你推薦幾個網站,上麵有很多Java高手,他們應該會知道,網站:
http://www.j2medev/
http://www.bc-cn/index.html
http://www.java-cn/
2017-02-10 17:26:16
讚 12
break31

break31

回答數:118  |  被采納數:82

因為5和2是整數,所以5/2也是整數,所以顯示2,如果想顯示小數必須把5和2中其中一個用小數表示,如5.0/2
2017-02-10 13:21:00
讚 11
相關問答
最新其他問答
解決方法