C語言-轉化字符串為雙精度浮點數(包括對科學計數法的處理)的函數atof


 1 //寫一個把字符串轉換為浮點數的程序
 2 #include <ctype.h>
 3 #include <stdlib.h> //這個頭文件里含有atof的標准庫函數聲明
4 double atof2(char s[]){ 5 double res; int i; int sign = 1; 6 double fpart = 1.0; 7 double exp = 10; 8 int expNum = 1; 9 double n = 1.0; 10 //讀掉字符串前面可能有的空格 11 for (i = 0; isspace(s[i]); i++) 12 ; 13 //讀取正負的標識 14 if (s[i] == '-'){ 15 sign = -1; 16 i++;//把指針遞增放在分支里,以免在判斷不成功時向后移動 17 } 18 for(res = 0.0 ; isdigit(s[i]); i++){ 19 res = res * 10.0 + ((int)s[i] - '0'); 20 } 21 if (s[i++] == '.'){ 22 for (fpart = 1.0; isdigit(s[i]); i++){ 23 res = res * 10.0 + ((int)s[i] - '0'); 24 fpart *= 10.0; 25 } 26 } 27 if (s[i++] == e){ 28 if (s[i] == '-'){ 29 exp = 0.1; 30 i++; 31 } 32 expNum = atoi((s + i)) 33   while (expNum-- > 0){ 34   n *= exp; 35   } 36 } 37 res = res * sign / fpart * n; 38 return res; 39 }

2021-06-1616:48:07 BY PeaceCoder


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM