1樓:匿名使用者
c語言中的float和double型別資料是浮點數,所以小數部分就存在四捨五入問題,當指定輸出位數在精度範圍之內時,系統會自動舍入,無需人工干預,如果小數部分也在精度範圍內,比如10.0/2.0 = 5.
0,2位以上的輸出位數時,後面的都是0,此時,當然不需要舍入了。
資料型別轉換有兩種方式,一種是預設強制轉換,比如將char、short、int、long和float型別資料賦給double型別變數時,編譯程式會自動實施轉換,這是因為,在精度更高時,這樣的轉換是內有損失的。另一種是手動強制型別轉換,比如dnum = (double)inum;,意思是將整形變數inum首先轉換為雙精度資料,然後再付給dnum。當將高精度型別變數賦給低精度型別變數時,除非手動強制轉換,否則,編譯程式會有提示的。
2樓:匿名使用者
資料強制轉換是用捨棄的方法,不會用四捨五入,什麼時候用四捨五入是需要詳細說明的,也就是你的業務需求而定,你可以把數字+0.5,然後進行強制轉換
3樓:匿名使用者
有四捨五入的情況,在你想要保留幾位小數的時候,多餘的緊接著的一位要四捨五入
不過c裡面沒有提供四捨五入的函式,不過你可以這樣a = (int)(a*100 + 0.5)/100這只是一個小技巧,對a的第三位進行四捨五入
4樓:奧特曼和他老婆
同樣的困惑,期待解答。尤其是當量化的位寬超過32位時,如何來實現截斷,用(int)x 強制轉換時,正數會出錯,但負數正確,不知何解。
5樓:匿名使用者
double強制轉換成int型的時候保留整數部分的。。
比如double a=1.5;
int b=a;
a就是1。
6樓:匿名使用者
浮點運算時,由於精度的問題,涉及到了四捨五入,這也是為什麼一個很大的數和一個很小的數相加,會出錯的原因。
但資料型別強制轉換時,是採取的捨棄原則,沒有四捨五入。
c語言中數值轉換什麼時候需要四捨五入,什麼時候不需要?如3.1415926轉換成%f就是3.141
7樓:匿名使用者
1、實型內部之間的轉換要四捨五入(例如雙精度強制轉換成單精度就要),如果實型轉整型的話專,就直接去屬掉小數部分就行了。
2、實數1234567.89賦值給單精度浮點型變數值怎麼又成為1234567.80,原因是float的有效位為前七位,從第八位起,得到的資料都是不準確的。
c語言:int型的強制型別轉換是按四捨五入嗎?
8樓:跪著作揖
強制型別轉換int的結果只保留整數部分,不是四捨五入。
例如:int 3.14,結果為3;
int 3.58,結果也為3。
int是將一個數值向下取整為最接近的整數的函式。int是資料庫中常用函式中的取整函式,常用來判別一個數能否被另一個數整除。
擴充套件資料:
int 函式使用的注意事項:
1、 語法int(number)其中number是需要進行向下舍入取整的實數。
2、 int函式是不進行四捨五入,直接去掉小數部分取整。
3、int函式處理負數的小數時總是向上進位的。
標準規定int的最小取值範圍是 -32767 到 32767。
int的取值範圍因機器而異,但是一定要大於或者等於 -32767 到 32767。一般來說,int佔用一個字的記憶體空間。因此,字長為 16 位(bit)的舊式 ibm 相容機使用 16 位來儲存整型int,取值範圍是-32768 到 32767 。
目前的個人電腦一般都是 32 位字長的,這些電腦中,int一般也是 32 位的,取值範圍是 -2147483648 到 2147483647。對於使用 64 位 cpu 的電腦,使用更多位儲存int也是很自然的事情,取值範圍當然也會更大。
9樓:匿名使用者
作為函式,int函式指資料庫中常用函式中的
“向下取整函式”。常用來取一個數中的整數部分。int是將一個數值向下取整為最接近的整數的函式。為取整函式。
意思是將被轉換數直接擷取整數部分,不進行四捨五入運算。例如:
int(123.456);//取值為123
int(-123.456);//取值為124
int(1234.56);//取值為1234
擴充套件資料:
除int外,其他強制轉換有:
void:宣告函式無返回值或無引數,宣告無型別指標,顯示丟棄運算結果。(c89標準新增)
char:字元型型別資料,屬於整型資料的一種。(k&r時期引入)
int:整型資料,表示範圍通常為編譯器指定的記憶體位元組長。(k&r時期引入)
float:單精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)
double:雙精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)
_bool:布林型(c99標準新增)
_complex:複數的基本型別(c99標準新增)
_imaginary:虛數,與複數基本型別相似,沒有實部的純虛數(c99標準新增)
_generic:提供過載的介面入口(c11標準新增)
修飾關鍵字:
short:修飾int,短整型資料,可省略被修飾的int。(k&r時期引入)
long:修飾int,長整型資料,可省略被修飾的int。(k&r時期引入)
long long:修飾int,超長整型資料,可省略被修飾的int。(c99標準新增)
signed:修飾整型資料,有符號資料型別。(c89標準新增)
unsigned:修飾整型資料,無符號資料型別。(k&r時期引入)
restrict:用於限定和約束指標,並表明指標是訪問一個資料物件的唯一且初始的方式。(c99標準新增)
10樓:聽不清啊
不是的。
c語言的int型的強制型別轉換是截尾取整的。
即int x=(int)3.997;
x的值是3。
11樓:匿名使用者
不會四捨五入,會直接截斷取整數部分。
12樓:匿名使用者
有四捨五入的情況,在你想要保留幾位小數的時候,多餘的緊接著的一位要四捨五入
不過c裡面沒有提供四捨五入的函式,不過你可以這樣a = (int)(a*100 + 0.5)/100這只是一個小技巧,對a的第三位進行四捨五入比如將55.3351保留2位小數,第三位四捨五入,可以用a=(a*100+0.
5)/100.0或a=(int)(a*100+0.5)/100.
0,,,我的問題是,,兩個都行嗎?有什麼區別,我做過實驗,貌似沒什麼區別……
13樓:直接用使用者名稱
不是 是捨棄小數部分
C語言。從鍵盤讀入實數,對其進行四捨五入處理,要求精確到到小數點後兩位
瑞春楓 對12.345來說,先乘以1000,得到12345,賦值給整型,12345 10得到個位數,判斷這個個位數若大於等於5則把12345加10 個位數,若小於5,則12345減去個位數,然後把最終的數先除以10,再除以100.0。 可以肯定的告訴你,你找的答案肯定不對。不信你輸2.225看一下,...
如何用c語言將實數內部精度四捨五入到小數點後第二位
自我程式設計 include int p10 int m 求10的次方double rounding double n,int w 小數四捨五入,引數w 精確到第幾數 int main return 0 double rounding double n,int w 小數四捨五入,引數w 精確到第幾數...
計算鋼筋根數都是四捨五入嗎,c 計算後的double怎麼四捨五入轉int
dyg大宇鍋 我們這裡根數都是四捨五入,特殊情況向上或者向下取整,不允許半根鋼筋 劍長順惲俏 向上進位取整合理!舉個例子可以瞭解 1 設計要求箍筋間距100,布筋範圍300時,箍筋數量 300 100 1 4根 2 設計要求箍筋間距100,布筋範圍390時,箍筋數量 390 100 1 5根 進位取...