if浮點數c語言
A. 怎麼用c語言代碼判斷一個浮點數大於0
假設浮點數為a,
一般就用a>0判斷就可以了
如果一定要求嚴謹的話,
你可以這么做:
判斷a-0的絕對值是否大於1e-7,
也就是:if(fabs(a-0)>1e-7)
代碼:
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
float a;
scanf("%f",&a);
if(fabs(a-0)>1e-7)
printf(">0");
else
printf("<=0");
getch();
}
B. C語言中為什麼不能用 if(a==b)判斷兩個浮點數是否相等我知道 if (fabs(a-b)<1e-6)可以判斷。求高人解答!
你查一下符點數存儲標准IEEE754就知道了!
符點數是採用二進制科學計數法來進行存儲的,因此,絕大多數的數在計算機中是不能 精確 表示的。
如果兩個數a b都是常數賦值,這樣比較,應該不會有問題,如:double a=5.3,b=5.3;
if ( a == b )
{
printf("a=b\n");
}
這時會輸出a=b
如果a或b是經過運算後得到的值,這時就不一定是一個精確的你想要的值了,如:
double b=2.6+2.7,a=5.3;
if ( a == b )
{
printf("a=b\n");
}
這時就不一定能輸出a=b了!
C. C語言 關於判斷一個浮點數是否等於0
浮點數是近似值。 一般用精度判斷
比如 判斷是否為0 可以用
if(fabs(y)<1e-6)
這樣就可以認為是為0 了。
直接==會不正確的。
D. c語言中%If的意思
%lf代表按雙精度輸入或輸出。
格式佔位符(%)是在C/C++語言中格式輸入函數,如scanf、printf等函數中使用。其意義就是起到格式佔位的意思,表示在該位置有輸入或者輸出。
(4)if浮點數c語言擴展閱讀:
雙精度浮點數(double)是計算機使用的一種數據類型,使用 64 位(8位元組) 來存儲一個浮點數。 它可以表示十進制的15或16位有效數字,其可以表示的數字的絕對值范圍大約是:-1.7E-308~1.7E+308
單精度浮點數(float)與雙精度浮點數(double)的區別如下:
1,在內存中佔有的位元組數不同
單精度浮點數在機內佔4個位元組
雙精度浮點數在機內佔8個位元組
2,有效數字位數不同
單精度浮點數有效數字7位
雙精度浮點數有效數字16位
3,所能表示數的范圍不同
單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38
雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308
4,在程序中處理速度不同
一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快。
參考資料來源:網路-雙精度浮點數
E. c語言程序中,float x與「零值」比較的if語句是(if==0)
浮點數等值比較使用下式:
#include
#include
fabs(a - b) < FLT_EPSILON
三個EPSILON:
FLT_EPSILON
DBL_EPSILON
LDBL_EPSILON
(5)if浮點數c語言擴展閱讀:
無論是float還是double類型的變數,都有精度限制。所以一定要避免將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」形式。
假設浮點變數的名字為x,應當將 if (x == 0.0) // 隱含錯誤的比較
轉化為 if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON是允許的誤差(即精度)。
F. 關於c語言,就想問下那個%if是什麼意思
%lf:表示輸入或者輸出雙精度浮點數。
雙精度浮點數(double)是計算機使用的一種數據類型,使用 64 位(8位元組) 來存儲一個浮點數。 它可以表示十進制的15或16位有效數字,其可以表示的數字的絕對值范圍大約是:-1.79E+308 ~ +1.79E+308
單精度浮點數是用來表示帶有小數部分的實數,一般用於科學計算。佔用4個位元組(32位)存儲空間,包括符號位1位,階碼8位,尾數23位。其數值范圍為-3.4E38~3.4E38,單精度浮點數最多有7位十進制有效數字,單精度浮點數的指數用「E」或「e」表示。
(6)if浮點數c語言擴展閱讀
單精度浮點數(float)與雙精度浮點數(double)的區別如下:
1、在內存中佔有的位元組數不同
單精度浮點數在機內佔4個位元組。雙精度浮點數在機內佔8個位元組
2、有效數字位數不同
單精度浮點數有效數字7位,雙精度浮點數有效數字16位
3、所能表示數的范圍不同
單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38。雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308
G. c語言中如何完整的判斷輸入的字元串是浮點數(代碼)
如果字元串已放在 char 數組 str[] 里,例如
char str[]="123.34.34";
double d;
if ( sscanf(str,"%lf",&d) != 1 ) printf("wrong floating data\n");
H. C語言中浮點數如何比較大小
浮點數比較大小,由於精度問題,所以直接比較有時可能會出錯。
所以在比較的時候需要用一個很小的數值來進行比較。當二者差小於這個很小的數時,就認為二者是相等的了。這個很小的數,稱為精度。
精度由計算過程中需求而定。比如一個常用的精度為1e-6.也就是0.000001.
所以對於兩個浮點數a,b
如果fabs(a-b)<=1e-6,那麼就是相等了。
fabs是求浮點數絕對值的函數。
類似的
判斷大於的時候,就是if(a>b
&&
fabs(a-b)>1e-6)。
判斷小於的時候,就是if(a
1e-6)。
I. C語言環境中,6. 判斷兩個浮點型變數x和y是否相等一般用:if( <1e-6 )… 。
浮點數不可能完全相等,因為寄存器的長度是有限制的,32bit和64bit,32位只能保留1位符號位,8位階,23位尾數。64位為1位符號位,11位階,52位尾數。所以浮點數不是精確的數(同理,double也是),一般來說,對於float x和float y,如果這兩個浮點數相等,就是abs(x-y) < 0.000001這樣判斷一般是沒有什麼問題的。