2015-08-28 49 views
-3

答案在書中沒有任何意義,我所以這裏的問題:變量a是一個浮點數,變量b是一個雙精度浮點數。寫語句,將

變量a是浮子和可變b是雙。編寫一個語句,該語句將在編譯程序時將值b指定爲a而不會導致錯誤。

下面是我在書中找到了答案:

fvar = (float)dvar; 

Whaaaat ????

這就是我認爲可能的工作:

public class HelloWorld 
{ 
    public static void main(String[] args) 
    { 
    float a = 7.5; 
    double b = 12.25; 
    a = (double)b; 
    } 
} 

還沒想出來,所以任何的幫助深表感謝。

+0

如果您需要將**從雙精度**轉換爲**浮點數,爲什麼'a =(double)b'有效? – fabian

+3

fvar =(float)dvar'究竟有什麼不清楚?你爲什麼期望演員能更好地「雙重」工作? – Seelenvirtuose

+0

我試着用(雙)和(浮動)鑄造,仍然出現錯誤。僅供參考這個java的東西.... fvar =(浮動)dvar不清楚,因爲變量是a和b ... –

回答

0

答案是完全合理的,因爲a是一個浮點值,它不像b是雙精度值那麼精確。 look here

哪一個告訴編譯器它只知道這些類型不匹配的變量的類型。由於它們都是浮點數,所以可以將b(double)轉換爲(浮點數),這會導致精度損失,因爲double可以保存比浮點更精確的數字。

如果您將b轉換爲float,則告訴編譯器將該數字剪切爲float。

6

所寫的一書的作者是正確的

fvar = (float)dvar; 

如果我們看一下你的代碼行,

a = (double)b; 

您鑄造雙重再翻一番。你必須做的就是投入浮動,這是寫在書上。作者是正確的。

+0

首先,我相信你! 第二關,我試圖鑄造FLOAT和它沒有工作 所以這裏是我的代碼現在: 公共類的HelloWorld { 公共 靜態無效的主要(字串[] args){ \t浮子上的= 7.5; double b = 12.25; a =(float)b; } } 和我得到 「/tmp/java_nvyAbf/HelloWorld.java:13:錯誤:不兼容的類型:從雙可能有損轉換爲float \t浮子上的= 7.5;」 這次我做了些什麼? –

+0

好吧,如果我沒有用任何值初始化a並初始化b,則將它作爲浮點工作。爲什麼不能初始化? –

相關問題