黑馬程式設計師 資料型別自動轉換問題

2021-06-17 01:12:57 字數 1141 閱讀 9658

---------------------- asp.net+android+io開發s、.net培訓、期待與您交流! ----------------------

static void main(string args)

控制台輸出的結果為3 ,

由此引起包括我在內的許多同學的疑問:結果為什麼是3而不是3.0或3.333……?

先來看一下自動轉換(隱式轉換)的解釋:

對於內建數值型別,如果要儲存的值無需截斷或四捨五入即可適應變數,則可以進行隱式轉換。 例如,

long

型別的變數(8 位元組整數)能夠儲存 

int(在 32 位計算機上為 4 位元組)可儲存的任何值。

在下面的示例中,

編譯器先將右側的值隱式轉換為 long 型別,再將它賦給 bignum

int num = 2147483647;

long bignum = num;

編譯器先把右側a/b的值隱式轉換為double型別,再將它賦給c 

,a/b的值是int型的3,轉換為double應該是3.0,但為什麼輸入的還是3呢?

這是因為writeline()會呼叫double的tostring()方法,3.0被標準化輸出顯示為3,實際上c的值仍為3.0

再問為什麼值是3.0,而不是3.333……?

double c = a/b; a和b都為int型,計算結果c也為int型,值為3,再自動轉換為double型,值為3.0,而不是3.3333……

怎樣才能得到3.333……的值?

如果先將a和b轉換為double型,則計算10.0/3.0結果會是3.333……

根據「表示式中如果有乙個double型別,則整個表示式可提公升為double型別」我們可以用下面的方法實現:

double c = 1.0 * a / b ; 

或 double c = (double)a / b ;

計算結果為3.333……,且控制台輸出結果也顯示為3.333……

----------------------asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

詳細請檢視:

黑馬程式設計師 型別轉換

一 隱式轉換,從型別a到型別b的轉換可以在所有情況下進行,執行轉換的規則非常簡單,可以讓編譯器執行轉換。參與運算 算數運算和賦值運算 的運算元和結果型別必須一致。當不一致時,如兩種型別相容且目標型別大於原型別時,系統自動完成型別轉換,在自動轉換中是不會丟失精度的。二 顯式轉換,從型別a到型別b的轉換...

黑馬程式設計師 型別轉換

每個函式都可以強制將乙個表示式轉換成某種特定資料型別。自動 隱式 型別轉換不會導致資料丟失。資料型別在資料結構中的定義是乙個值的集合以及定義在這個值集上的一組操作。變數是用來儲存值的所在處 它們有名字和資料型別。變數的資料型別決定了如何將代表這些值的位儲存到計算機的記憶體中。在宣告變數時也可指定它的...

黑馬程式設計師 C 資料型別

windows phone 7手機開發 net培訓 期待與您交流!c 程式設計中,大家會經常使用到不同的資料型別,那麼 程式語言到底有什麼型別呢?具體如下 1 值型別 各種值型別總是含有相應該型別的乙個值。c 迫使你初始化變數才能使用它們進行計算 變數沒有初始化不會出問題,因為當你企圖使用它們時,編...