C 中關於float和double的小問題

2022-11-16 03:55:57 字數 1065 閱讀 1143

1樓:冬草秋葉

寫常數時:

19、3、5 這樣寫就是int;

4.0、3.14 這樣寫就是double;

4.0f、3.14f 這樣寫就是float;

運算時,低精度的會自動向高精度轉換,比如有double時,int和float都會轉換成double,你那個表示式中sqrt()返回乙個double,所以其他int都轉成了double,最終結果也是double。

y1的結果是54,呵呵,54不就是54.0麼,只是你顯示到螢幕的時候沒有把小數部分顯示出來而已,改成y1=x1/5+x2+0.1,就能看到54.1了。

double跟int沒有任何包含關係,只是在計算機記憶體中的儲存方式不一樣。例一中用4.0是因為sqrt函式要求傳入乙個double型資料。

2樓:

第乙個你說的不對!系統預設的是保持最高精度!所以是double!

第二個:你定義的x1是int型別的,所以x1/5是乙個整形,兩個整形相加,當然沒有小數了

第三個:你給的那個是乙個指數形式的常量,當然不是了。float是指的變數型別。

3樓:匿名使用者

首先,y1是double型別的,等號左邊的計算結果是int型的,在複製給y1是隱式轉換為double型別,你輸出y1的時候需要設定顯示小數點 才能看到 結果是乙個double型別的

是float型別的,只不過在c++中,會隱式轉換為double型別了

4樓:匿名使用者

當運算表示式裡的引數型別相同時 則返回值的型別是固定的 當運算表示式裡的引數型別不同是 , 會提高精度 直到相同為止。 根據這個可以解決你的問題

0.0314e2已經超出了float的精度範圍了。

5樓:邰讓毓申

兩者區別主要在分配儲存空間和描述浮點數所擁有的有效數字位數。通常情況下:

1,大多數情況下,編譯器為float分配4位元組,而為double則分配8位元組。

2,float可提供6位有效數字,而double則可以提供15位有效數字。

所以在應用是需要注意定義資料的精度要求。

關於C類中帶函式的問題,關於C類中帶函式模板的問題。。

include using namespace std class student class manage int main 大概按照上面的來寫就可以了 大致明白你的意思了。你是想用c 的stl標準的algorithm演算法來排序對吧?如果是這樣,你得自己寫乙個iterator類的東西來處理你的資...

請教關於C 中虛基類的問題,請教關於C 中虛基類的乙個問題

這是個菱形繼承,菱形繼承即是子類有兩個父類,這兩個父類都繼承自同乙個類。這時候,如果不使用虛基類,定義子類的時候,會生成兩個 祖父 基類的樣本,在呼叫 祖父 基類的成員函式的時候,就會出現 歧義 錯誤,無法編譯通過。解決的辦法就是使用虛基類,這樣就只保留乙個 祖父 基類的樣本,呼叫也不會出現 歧義 ...

C中關於static的問題

我來回答,靜態方法中,如果有輸出引數的話,該輸出引數必須是靜態成員才可以,靜態方法中使用的成員必須是靜態的。你這裡宣告的方法getdeptlist,如果兩個引數是輸入引數,那麼是不會報錯的,但是你的引數輸入後,經過函式該處理後,又輸出該引數,相當於成員級,故需使用靜態成員級引數。另外在使用時,直接呼...