C語言中,為什麼(int)f結果為5,小數點後面不需要四舍五

2021-04-18 12:28:07 字數 6181 閱讀 3740

1樓:醫藥資料庫

c語言對浮點數f的強制轉換為int,是直接取整數數部分,不會四捨五入。

如果要實現四捨五入的功能的語句應該是 int (f+0.5)

c語言中怎麼四捨五入

2樓:匿名使用者

利用取整運算的截斷特點實現。

比如:int a=0.75;取整後賦值給a的是0,小數點後面的被截斷了。

如果要做整數的四捨五入,那麼可以:a=(int)(0.75+0.5);取整後得到的與數學中四捨五入的結果一致,都是1;

如果要進行小數點後面的四捨五入,可以這樣計算:

要保留小數點後面兩位的小數,即在小數點後面兩位上做四捨五入,0.756

float a=0.756,b; int x; b=a*100; b+=0.5; x=b; b=x/100.0;

運算是這樣的:先將0.756乘以100,得到75.

6,然後利用取值運算的截斷做四捨五入,75.6+0.5=76.

1取整後等於76,再除以100,得到結果:0.76

3樓:高中生三

設 float x ; int  y ; 則有y=(int)(x+0.5)>(int)x?(int)x+1:(int)x進行上述運算後,y 的值就是 x 四捨五入的結果。

利用取整運算的截斷特點實現。

比如:int a=0.75;取整後賦值給a的是0,小數點後面的被截斷了。

如果要做整數的四捨五入,那麼可以:a=(int)(0.75+0.5);取整後得到的與數學中四捨五入的結果一致,都是1;

如果要進行小數點後面的四捨五入,可以這樣計算:

要保留小數點後面兩位的小數,即在小數點後面兩位上做四捨五入,0.756

float a=0.756,b; int x; b=a*100; b+=0.5; x=b; b=x/100;

運算是這樣的:先將0.756乘以100,得到75.

6,然後利用取值運算的截斷做四捨五入,75.6+0.5=76.

1取整後等於76,再除以100,得到結果:0.76

4樓:請叫我小強

如果是保留後面的兩位小數,就應該用取整,

比如0.756

double a=0.756;

a=(a*100+0.5)/100.0;

printf(「%.2lf",a)

5樓:聽不清啊

如果只是要求輸出結果「四捨五入」,只要通過輸出格式符控制即可。

例如:double pi=3.1415926;

printf("%.4lf\n",pi);

可得輸出為3.1416。

printf("%.2lf\n",pi);

可得輸出為3.14。

如果是要把變數本身的值四捨五入到4位小數,則可以這樣處理:

double pi=3.1415926;

pi=((int)(pi*10000+0.5))/10000.0;

6樓:匿名使用者

有一個round函式可以

直接呼叫,

#include"stdio.h"

#include"math.h"

void main()

7樓:匿名使用者

將整數+5,再整除10,再乘以10,就可以了參考**:

#include

int main()

8樓:匿名使用者

round(x)

引數時double型,返回小數對整數部分的四捨五入值

比如 round(3.623); 返回4

9樓:量子高巨集亮

y = (int)(x+0.5);

10樓:匿名使用者

int main()

11樓:匿名使用者

比如小數為 f

(float)((int)(f*100+0.5))/100.0

首先為了保留兩位,乘以100,小數點向前兩位, 然後+0.5取整保證是四捨五入 再轉成 float形式或double形式 除以100 就ok了

12樓:毛毛

利用取整運算的截斷特點實現。

13樓:匿名使用者

給你個簡單的餓例子

四捨五入小數點後一位

float f=1.54536;

f=(int)(f*10+5)/10.0;

你分析看看就知道了

#include

main()

14樓:匿名使用者

中間函式這樣填:

float x;

int a;

cin>>x;

if(x>=0)

a=x+0.5;

else

a=x-0.5;

15樓:清雅之蘭向日葵

使用一個if語句,讓它的值減去它的整數形式然後與0.5比較

16樓:菜鳥升級中

int a = 100.453627

printf("%.1f",a + 0.05); //四捨五入到十分位

printf("%.2f",a + 0.005); //四捨五入到百分位

後面的方法一樣

17樓:匿名使用者

那你這個是什麼意思呢。。不許用「%.1f %.2f。。。

我的想法是,十分位,你就把你的數*10,然後%10的到的餘數就是這位。。。百分位類似。。

後續怎麼輸出,你就自己看著辦吧。。反正小數點你是肯定要自己輸出了 :)

18樓:我在天堂d你

最後一步錯啦,要b=(float)x/100

c語言中數值轉換什麼時候需要四捨五入,什麼時候不需要?如3.1415926轉換成%f就是3.141

19樓:匿名使用者

1、實型內部之間的轉換要四捨五入(例如雙精度強制轉換成單精度就要),如果實型轉整型的話專,就直接去屬掉小數部分就行了。

2、實數1234567.89賦值給單精度浮點型變數值怎麼又成為1234567.80,原因是float的有效位為前七位,從第八位起,得到的資料都是不準確的。

c語言:int型的強制型別轉換是按四捨五入嗎?

20樓:跪著作揖

強制型別轉換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也是很自然的事情,取值範圍當然也會更大。

21樓:匿名使用者

作為函式,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標準新增)

22樓:聽不清啊

不是的。

c語言的int型的強制型別轉換是截尾取整的。

即int x=(int)3.997;

x的值是3。

23樓:匿名使用者

不會四捨五入,會直接截斷取整數部分。

24樓:匿名使用者

有四捨五入的情況,在你想要保留幾位小數的時候,多餘的緊接著的一位要四捨五入

不過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,,,我的問題是,,兩個都行嗎?有什麼區別,我做過實驗,貌似沒什麼區別……

25樓:直接用使用者名稱

不是 是捨棄小數部分

c語言中怎樣輸入一個雙精度數,對小數點後第2位進行四捨五入,即保留一位小數,輸出四捨五入的結果。

26樓:windy笨笨狗

#include

int main(void)

27樓:匿名使用者

#include

int main()

c語言中什麼運算只取整數部分,什麼時候不但取整,還要四捨五入?? 發現c語言中很多時候不用四捨五入

28樓:夢羽天堂

取整要看型別的自動轉換了,,比如a和b都是整形資料,那麼a/b的結果就一定是整形。結果就取整數部分,如果其中有一個是浮點型,那麼結果就是浮點型,但是不會四捨五入,如果需要四捨五入那麼應該寫成a/b+0.5.

自動轉換的順序是char,short,int,float,double,越往後優先順序越高

29樓:狂

取整的話 還是要看資料型別的 int型別的除法就是取整的

至於四捨五入什麼的 沒有專門的規定 可以自己處理一下即可

30樓:匿名使用者

定義int的時候就取整了

31樓:匿名使用者

c語言裡面都沒有四捨五入。的都是隻取整數部分。

32樓:鬼火狼煙

到底需要四捨五入還是直接取整不是程式說了算了,是根據實際情況說了算的這個要看你需要的結果了

比如說double x=1.3;

printf("%d",int(x)) 取整printf("%d",int(x+0.5)) 四捨五入

在C語言中11結果是,c語言中,為什麼b11最終得出b

在c或c 中 是與的操作符,只要操作符兩邊都為真 不為0就為真 結果就為真。因為 1的二進位制碼 1的二進位制位全為1 不是0,所以兩個條件都為真,結果就為真。前面有人寫出了執行結果,可以看出,c或c 是用1來表示真的 所以結果就為1了 是 1 include int main include us...

c語言中以下執行的結果為什麼是2,0,3,

遠離c a b c 這種表示式,工作中寫出這種式子是會 的,這就是無良考試出的極端誤導的題目 一個c語言程式,為什麼輸出的結果為3,2,0,而不是3,3,1呢?有沒有哪位朋友幫忙解答?謝謝啦 當x為真時,因為是 號,後面的就不進行判斷了,就不進行計算了。a x y z 就是a x或 y和z 計算從左...

C語言中42的值為1困惑,C語言中402的值為1困惑

首先 和 的有限級別是相同的 4 0 同時為真才是真所以為 他的值為 0然後0 2 因為 是隻要一個為真就為真 所以最後結果為1 邏輯運算子的運算優先順序是 所以先算4 0,因為4為非0,即為真,但這並能表明整個4 0就是真,還要判斷後面的0,為假,所以整個表示式4 0就為假,值為0,然後再算0 2...