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...