十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
C語言中無符號整型轉(zhuǎn)換成浮點(diǎn)型方法如下:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、阿勒泰網(wǎng)站維護(hù)、網(wǎng)站推廣。
unsigned
int
x=123;
1、輸出強(qiáng)制轉(zhuǎn)換,如:
printf("%f",
x
);
//這樣的輸出因為%f與x的類型不同,導(dǎo)致輸出數(shù)據(jù)異常
printf("%f",
(float)x
);
//強(qiáng)制轉(zhuǎn)換成浮點(diǎn)型,可正確輸出
2、存儲到相應(yīng)的變量中,如:
float
fVal;
fVal=x
;
//系統(tǒng)會隱式轉(zhuǎn)換
因float的有效數(shù)位最大為7位,所以,并不是所有整數(shù)都可以用float類型變量來表示,所以,最好使用double類型來存儲任意的整數(shù)
printf("%f",
fVal
);
//輸出正常
double
dVal;
dVal=x
;
//系統(tǒng)會隱式轉(zhuǎn)換
printf("%f",
dVal
);
//輸出正常
可以采用庫函數(shù)atof, 頭文件為#include stdlib.h
函數(shù)名: atof
功 能: 把字符串轉(zhuǎn)換成浮點(diǎn)數(shù)
用 法: double atof(const char *nptr);
實例:
#includestdlib.h
#includestdio.h
intmain()
{
double d;
char*str="12345.67";
d=atof(str);
printf("string=%sdouble=%lf\n",str,d);
return 0;
}
C語言中將字符串轉(zhuǎn)型化為浮點(diǎn)型數(shù)據(jù)的函數(shù)有:atof()
和
strtod()
頭文件:
#include stdlib.h
函數(shù)原型:
double atof (const char* str);
【參數(shù)說明】str 為要轉(zhuǎn)換的字符串。
【函數(shù)說明】atof() 函數(shù)會掃描參數(shù)str字符串,跳過前面的空白字符(例如空格,tab縮進(jìn)等,可以通過 isspace() 函數(shù)來檢測),直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。參數(shù)str 字符串可包含正負(fù)號、小數(shù)點(diǎn)或E(e)來表示指數(shù)部分,如123. 456 或123e-2。
【返回值】返回轉(zhuǎn)換后的浮點(diǎn)數(shù);如果字符串 str 不能被轉(zhuǎn)換為 double,那么返回 0.0。
double strtod (const char* str, char** endptr);
【參數(shù)說明】str 為要轉(zhuǎn)換的字符串,endstr 為第一個不能轉(zhuǎn)換的字符的指針。
【函數(shù)說明】strtod() 函數(shù)會掃描參數(shù)str字符串,跳過前面的空白字符(例如空格,tab縮進(jìn)等,可以通過 isspace() 函數(shù)來檢測),直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,到出現(xiàn)非數(shù)字或字符串結(jié)束時('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。參數(shù) str 字符串可包含正負(fù)號、小數(shù)點(diǎn)或E(e)來表示指數(shù)部分。如123. 456 或123e-2。
若endptr 不為NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數(shù)無效,或不使用該參數(shù)。
【返回值】返回轉(zhuǎn)換后的浮點(diǎn)型數(shù);若不能轉(zhuǎn)換或字符串為空,則返回 0.0。
使用 atof( str ) 與使用 strtod(str, NULL) 結(jié)果相同。
一般應(yīng)用方法為:
char str[]="123.45";
double d=atof(str);
printf("%.2lf", d ); //輸出123.45
C語言有以下幾種取整方法:
1、直接賦值給整數(shù)變量。如:
int i = 2.5; 或 i = (int) 2.5;
這種方法采用的是舍去小數(shù)部分,能用于你的問題。
2、C/C++中的整數(shù)除法運(yùn)算符“/”本身就有取整功能(int / int),而下面介紹的取整函數(shù)返回值是double。整數(shù)除法對正數(shù)的取整是舍去小數(shù)部分,能用于你的問題。不過整數(shù)除法對負(fù)數(shù)的取整結(jié)果和使用的C編譯器有關(guān)。
3、使用floor函數(shù)。floor(x)返回的是小于或等于x的最大整數(shù)。如:
floor(2.5) = 2
floor(-2.5) = -3
4、使用ceil函數(shù)。ceil(x)返回的是大于x的最小整數(shù)。如:
ceil(2.5) = 3
ceil(-2.5) = -2
floor()是向負(fù)無窮大舍入,floor(-2.5) = -3;ceil()是向正無窮大舍入,ceil(-2.5) = -2。floor函數(shù)能用于你的問題。
5、
int b = (int)a;//取整
int c = (int)(a+0.5);//四舍五入
用atoi函數(shù)將字符串轉(zhuǎn)換成整形,然后再用整形轉(zhuǎn)換為浮點(diǎn)型。
atoi C語言庫函數(shù)名: atoi 功 能: 把字符串轉(zhuǎn)換成整型數(shù). 名字來源:array to integer 的縮寫. 原型: int atoi(const char *nptr); 函數(shù)說明: 參數(shù)nptr字符串,如果第一個非空格字符不存在或者不是數(shù)字也不是正負(fù)號則返回零,否則開始做類型轉(zhuǎn)換,之后檢測到非數(shù)字或結(jié)束符 \0 時停止轉(zhuǎn)換,返回整型數(shù)。 頭文件: #include stdlib.h 程序例: 1) #include stdlib.h #include stdio.h int main(void) { int n; char *str = "12345.67"; n = atoi(str); printf("string = %s integer = %d\n", str, n); return 0; } 執(zhí)行結(jié)果 string = 12345.67 integer = 12345
c語言, sscanf 可以轉(zhuǎn)數(shù)值字符串 為 數(shù)值。
第2個數(shù)值起,定位用:“如果前一個字符是空白,后一個是數(shù)字,就是數(shù)的開始”
n -- 幫你統(tǒng)計個數(shù),若想把數(shù)據(jù)存入數(shù)組,則可以用n為下標(biāo)。
#include stdio.h
#include stdlib.h
main()
{
char str[100]="123 667.23 54e-2";
int i,L,n=0;
double y;
L = strlen(str);
if (sscanf(str,"%lf",y)){ printf("%g ",y);n++;} // 取第一個數(shù)值
for (i=1;iL;i++)
if (str[i]==' ' (str[i+1]='0' str[i+1]='9')) {
sscanf(str[i+1],"%lf",y);
printf("%g ",y);
n++;
}
printf("-- total %d data I have read\n",n);
return 0;
}