C语言科学计数法字符串转化为实数
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                C语言科学计数法字符串转化为实数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                任務描述:將科學計數(shù)法字符串轉(zhuǎn)化為實數(shù)
#include<stdio.h>// 將科學計數(shù)法字符串轉(zhuǎn)化為實數(shù) // 如 1.345-e2 為0.01345 // 注意,單個字符轉(zhuǎn)化為對應的數(shù)字不能用(int) char,應該用 char - '0' float convert(char *num){printf("開始轉(zhuǎn)換%s\n",num);float num1 = 0.0,num2 = 0.0;int sign = 1;int exp = 1,cishu = 0;//表示e后面是正號還是負號,正號為1,負號為-1//cishu表示是幾次飯char *p = num;if(*p == '-'){sign = -1;p++;//如果小數(shù)是復數(shù)}while(isdigit(*p)){num1 = num1 * 10 + *p - '0';p++;//小數(shù)點前面的部分}printf("num1:%f\n",num1);float i = 0.1;p++;while(isdigit(*p)){num2 += i * (*p- '0');i *= 0.1;p++;}//小數(shù)點后面的部分printf("num2:%f\n",num2);if(*p == 'e' || *p == 'E')p++;if(*p == '-'){exp = -1;p++;}else if(*p == '+')p++;while(*p != '\0') {cishu = cishu*10 + *p - '0';p++;}printf("cishu:%d\n",cishu);float result = sign*(num1+num2);if(exp == -1) i = 0.1;else i = 10;for(int j=0;j<cishu;j++) result*=i;return result;} int main() {char *str = "21.345e2";float result = convert(str);printf("%f",result);return 0; }總結
以上是生活随笔為你收集整理的C语言科学计数法字符串转化为实数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Linux vi 查找和替换字符串
 - 下一篇: SuperMap GIS 10i软件概览